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正则表达式。