跳转至

Python 简单爬虫示例


2018-10-23 by dongnan

功能

这个Python Demo程序用于获得百度贴吧某个帖子的内的图片文件,完整代码

规则

已知帖子规则:

  1. 帖子地址,"http://tieba.baidu.com/p/2476521385?pn=1"
  2. 帖子分页,共 53 页。
  3. 图片规则,带有 <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正则表达式。

欢迎关注微信公众号: 运维录

参考

内容提取神器 BeautifulSoup 的用法

Back to top