繁簡切換您正在訪問的是FX168財經網,本網站所提供的內容及信息均遵守中華人民共和國香港特別行政區當地法律法規。

FX168财经网>人物频道>帖子

【爬虫系列】2、几个简单的实例

作者/asadadsa 2019-08-17 19:02 0 来源: FX168财经网人物频道
最好的学习方法是教会他人

本文目录:
一、亚马逊商品页面爬取
二、百度/360搜索关键字提交
三、网络图片的爬取与存储
四、IP地址归属地查询

一、亚马逊商品页面爬取

找一个页面,如下

url = "https://www.amazon.cn/dp/B07FQKB4TM?_encoding=UTF8&ref_=sa_menu_kindle_l3_ki"

使用之前的通用代码框架,会发现产生异常:

import requests
def getHTMLText(url):
    try:
        r = requests.get(url,timeout=30)
        #如果状态不是200,引发HTTPError异常
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return '产生异常'

if __name__ == "__main__":
    url = "https://www.amazon.cn/dp/B07FQKB4TM?_encoding=UTF8&ref_=sa_menu_kindle_l3_ki"
    print(getHTMLText(url))

查看其返回状态为503

import requests
url = "https://www.amazon.cn/dp/B07FQKB4TM?_encoding=UTF8&ref_=sa_menu_kindle_l3_ki"
r = requests.get(url,timeout=30)
print(r.status_code)
print(r.request.headers)
r.encoding = r.apparent_encoding
print(r.text)

可以看 到如下信息:
Img
Img
此时我们需要考虑在get中使用一个user-agent参数

import requests
url = "https://www.amazon.cn/dp/B07FQKB4TM?_encoding=UTF8&ref_=sa_menu_kindle_l3_ki"
try:
    kv = {'user-agent':'Mozilla/5.0'}
    r1 = requests.get(url)
    r2 = requests.get(url,headers=kv)
    print(r1.status_code)
    print(r1.request.headers)
    print('\n')
    print(r2.status_code)
    print(r2.request.headers)
    r2.raise_for_status()
    r2.encoding = r2.apparent_encoding
    #print(r2.text)
except:
    print('爬取失败')

对比结果如下:
这样就能正常爬取了。
Img

二、百度/360搜索关键字提交

百度的关键词接口:

http://www.baidu.com/s?wd=keyword

360的关键词接口:

http://www.so.com/s?q=keyword

具体用法见下面实例
百度:

import requests
keyword = "Python"
try:
    kv = {'wd':keyword}
    r = requests.get("http://www.baidu.com/s",params=kv)
    print(r.request.url)
    r.raise_for_status()
    print(len(r.text))
except:
    print("爬取失败")

360:

import requests
keyword = "Python"
try:
    kv = {'q':keyword}
    r = requests.get("http://www.so.com/s",params=kv)
    print(r.request.url)
    r.raise_for_status()
    print(len(r.text))
except:
    print("爬取失败")

三、网络图片的爬取与存储

首先,找个目标图片的web地址。
然后就是使用requests爬取,使用os库进行相关存储操作。
全部示例代码如下:

import requests
import os
url = "https://c-ssl.duitang.com/uploads/item/201809/12/20180912231200_jPuyW.jpeg"
root = "D:\\pics\\"
path = root   url.split('/')[-1]
try:
    if not os.path.exists(root):
        os.mkdir(root)
    if not os.path.exists(path):
        r = requests.get(url)
        with open(path,'wb') as f:
            f.write(r.content)
            f.close()
            print("文件保存成功")
    else:
        print("文件已存在")
except:
    print("爬取失败")

四、IP地址归属地查询

最关键的是知道目标网址,然后输入相关需要查询的内容。

import requests
url = "http://m.ip138.com/ip.asp?ip="
try:
    r = requests.get(url 'www.joinquant.com')
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.text[-500:])
except:
    print("爬取失败")

总结:

以上示例都相对简单,总体上就是知道一个网址,然后使用requests进行请求,得到一个Response对象。对这个对象的处理,我们仅仅是显示打印。这远远满足不了要求。

分享到:
举报财经168客户端下载

全部回复

0/140

投稿 您想发表你的观点和看法?

更多人气分析师

  • 张亦巧

    人气2144文章4145粉丝45

    暂无个人简介信息

  • 梁孟梵

    人气2152文章3177粉丝39

    qq:2294906466 了解群指导添加微信mfmacd

  • 指导老师

    人气1856文章4423粉丝52

    暂无个人简介信息

  • 李冉晴

    人气2296文章3821粉丝34

    李冉晴,专业现贷实盘分析师。

  • 刘钥钥1

    人气2016文章3119粉丝34

    专业从事现货黄金、现货白银模似实盘操作分析指导

  • 张迎妤

    人气1896文章3305粉丝34

    个人专注于行情技术分析,消息面解读剖析,给予您第一时间方向...

  • 金泰铬J

    人气2320文章3925粉丝51

    投资问答解咨询金泰铬V/信tgtg67即可获取每日的实时资讯、行情...

  • 金算盘

    人气2696文章7761粉丝125

    高级分析师,混过名校,厮杀于股市和期货、证券市场多年,专注...

  • 金帝财神

    人气4728文章8329粉丝118

    本文由资深分析师金帝财神微信:934295330,指导黄金,白银,...