Python 简单爬虫示例
2018-10-23 by dongnan
功能
这个Python Demo程序用于获得百度贴吧某个帖子的内的图片文件,完整代码。
规则
已知帖子规则:
- 帖子地址,
"http://tieba.baidu.com/p/2476521385?pn=1"
。 - 帖子分页,共
53
页。 - 图片规则,带有
<img class="BDE_Image" src="(.*?)"
的字符串。
自定义函数
spider函数
基于 requests
库,封装的 spider()
函数。用于模拟浏览器,下载相应的文件 如 html
数据,图片文件等。
核心部分,是 requests
库,如: requests.get(item, headers=headers, timeout=5)
此方法发送一个 HTTP
请求,并获取到相应的资源。
参数,依次为 url
地址、HTTP
头部数据、timeout
超时时间。
返回值,Requests
会基于 HTTP
头部对响应的编码作出有根据的推测。 当访问 response.text 之时,Requests
会使用其推测的文本编码。对于非文本请求,以字节(类型)的方式访问请求响应体。
parse_html函数
基于 BeautifulSoup
库,封装的 parse_html()
函数。用于匹配字符串内的图片地址(URL),并返回图片地址列表。
核心部分,是 BeautifulSoup4
库,如:soup = BeautifulSoup(item, "lxml")
,soup
是 BeautifulSoup 对象。soup.select(".BDE_Image")
方法返回 CSS选择器名称为 BDE_Image
的资源。
参数,item 参数可以 urlllib
或者 requests
请求返回的内容。
返回值,图片地址列表。
download函数
有了上面的两个自定义函数,就可以将图片地址列表中的资源依次下载到本地,然后还有以下逻辑。
- 子文件夹
- 重复下载
- 爬虫拦截(添加agent、refer httpHeader) 低速爬取下载等。
小结
Requests
用于替代urllib
库完成下载任务。BeautifulSoup
用于替代 自己编写re
正则表达式。