爬取的代码

    xiaoxiao2022-07-03  128

    爬取网页的通用代码框架:

    import requests def getHTMLText(url): try: r=requests.get(url,timeout=30) r.raise_for_status()#如果状态不是200,引发HTTPError异常 r.encoding=r.apparent_encoding return r.text except: return"产生异常" if __name__=="__main__": url="http://www.baidu.com" print(getHTMLText(url))

    例1、爬取京东某商品页面的信息。

    import requests >>> r=requests.get("https://item.jd.com/21872445778.html") >>> r.status_code 200 >>> r.encoding 'gbk' >>> r.text[:1000]

    结果:

    很多网站对网络爬虫有限制,无非两种限制方法。一:通过ROBOTS协议告知爬虫者哪些东西可以访问,哪些不行。第二种方法比较隐性,通过查看访问者的ATP的头来判断该访问是否由爬虫引起的,网站一般接受的是由游览器引发的或产生的爬虫,而对于爬虫的请求网站是可以拒绝的。

    例2、爬取亚马逊商品页面 查询头的情况: 其中,字段’User-Agent’:'python-requests/2.11.1’说明我们的爬虫忠实地告诉了亚马逊的服务器:这次的访问是由一个python的requests库的程序产生的,亚马逊一旦提供了这样的来源审查,就可以使这样的访问产生错误,或者不支持这样的访问。

    解决办法: 更改头部信息,让我们的程序去模拟一个服务器去向亚马逊发送请求。 首先构造一个键值对:

    kv={'user-agent':'Mozilia/5.0'}

    说明重新定义了’User-agent’的内容,使它等于’Mozilia/5.0’(标准的浏览器的身份标识的字段),该值说明这个时候的’User-agent’可能是一个浏览器,

    r=requests.get(url,headers=kv)

    再次查看头部情况: 给出全部代码:

    import requests url="https://www.amazon.cn/gp/product/B01M8L5Z3Y" try: kv={'user-agent':'Mozilla/5.0'} r=requests.get(url,headers=kv) r.raise_for_status()#如果状态不是200,引发HTTPError异常 r.encoding=r.apparent_encoding return (r.text[:1000]) except: return"爬取失败"

    结论:通过Headers字段让我们的代码模拟浏览器向亚马逊服务器提供http请求,者对于很多对自己的数据保护比较好的网站,通过这样的方式也能爬取相关的内容。

    最新回复(0)