python爬虫--豆瓣

查看相关的爬虫协议:
部分网站都会给出

robots.txt 写有相关爬虫说明

注意:

在爬虫时候,通过requests.get()得到不正确的状态码:
4**:表示出错

403问题:服务器已经理解请求,但是拒绝执行它
418问题:网站的反爬程序返回的
其他HTTP状态码查找可以参考:

[异常状态码查看](https://baike.baidu.com/item/HTTP%E7%8A%B6%E6%80%81%E7%A0%81/5-053660?fr=aladdin#4_19)

用Requests库的get()函数抓取一个你平时经常使用的网站主页,并查看该网站的爬虫协议(如果有的话)。默认答案是正确,你成功了吗?(●’◡’●)

抓取网站情况多样,有时还会很复杂,这需要长期的积累,不能一蹴而就,列举几种情况:

a.假设获取的是二进制文件,则可以借鉴如下方法保存数据:

import requests
 
r = requests.get('https://www.baidu.com/img/bd_logo1.png')
with open('baidu.png', 'wb') as fp:
   fp.write(r.content)

b. 有些网站会对http请求的Headers的User-Agent进行检测,需将headers信息传递给get函数的headers参数,例如豆瓣最近也有了此要求,例如知乎,直接访问会返回400,加上headers参数后可正确返回:

>>> re = requests.get('https://www.zhihu.com')
>>> re.status_code
400

headers可从http测试网站https://httpbin.org或浏览器的“开发者工具”获得

>>> headers = {"User-Agent": "Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.83 Safari/535.11"}
>>> re = requests.get('https://www.zhihu.com', headers = headers)
>>> re.status_code
200

反爬的策略还有很多,需要逐渐熟悉,有些网站要想获得数据还需要登录,需要分析登录需要的属性。

c. 被JS渲染过的页面内容获取

可以通过浏览器的“开发者工具”功能寻找真正提供数据的页面,有时会有一定的难度。

你可能感兴趣的:(python爬虫--豆瓣)