Python爬虫实战(四): 豆瓣小组话题数据采集-动态网页
优采云 发布时间: 2020-08-09 07:201,简介
注意: 在上一篇文章“ Python爬虫战斗(3): Anju客房房地产经纪人信息采集”中,访问的页面是静态页面. 一位朋友模仿了实际战斗来采集豆瓣小组的网页,但结果没有成功. 本文是有关动态网页的数据采集编程实战的文章.
在Python开源Web爬虫项目的开始,我们将Web爬虫分为两类: 即时爬虫和收获Web爬虫. 为了适应各种应用场景,GooSeeker的整个Web爬网程序产品线包括四种类型的产品,如下图所示:
此实际战斗是上图中的“独立python采集器”的示例. 以豆瓣小组讨论主题的信息(/ group / haixiuzu / discussion?start = 0)为例,记录整个采集过程,包括python和依赖项. 即使您是python初学者,该库的安装也可以成功按照文章内容完成了操作.
2,安装Python和相关的依赖库
2.1,安装Python3.5.2
2.2,Lxml 3.6.0
2.3,下载Web内容提取程序
Web内容提取程序是GooSeeker为开放源代码Python Instant Web爬网程序项目发布的类. 使用此类可以大大减少数据采集规则的调试时间. 有关详细信息,请参阅“ Python即时Web爬网程序项目: 内容提取器的定义”
2.4,安装硒
2.5,下载PhantomJS
3,网络爬虫的源代码
# _*_coding:utf8_*_
# douban.py
# 爬取豆瓣小组讨论话题
from urllib import request
from lxml import etree
from gooseeker import GsExtractor
from selenium import webdriver
class PhantomSpider:
def getContent(self, url):
browser = webdriver.PhantomJS(executable_path='C:\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe')
browser.get(url)
time.sleep(3)
html = browser.execute_script("return document.documentElement.outerHTML")
output = etree.HTML(html)
return output
def saveContent(self, filepath, content):
file_obj = open(filepath, 'w', encoding='UTF-8')
file_obj.write(content)
file_obj.close()
doubanExtra = GsExtractor()
# 下面这句调用gooseeker的api来设置xslt抓取规则
# 第一个参数是app key,请到GooSeeker会员中心申请
# 第二个参数是规则名,是通过GooSeeker的图形化工具: 谋数台MS 来生成的
doubanExtra.setXsltFromAPI("ffd5273e213036d812ea298922e2627b" , "豆瓣小组讨论话题")
url = "https://www.douban.com/group/haixiuzu/discussion?start="
totalpages = 5
doubanSpider = PhantomSpider()
print("爬取开始")
for pagenumber in range(1 , totalpages):
currenturl = url + str((pagenumber-1)*25)
print("正在爬取", currenturl)
content = doubanSpider.getContent(currenturl)
outputxml = doubanExtra.extract(content)
outputfile = "result" + str(pagenumber) +".xml"
doubanSpider.saveContent(outputfile , str(outputxml))
print("爬取结束")
运行过程如下:
请注意: 为了使源代码更整洁并使采集器更加通用,请通过api将搜寻规则注入到内容提取器bbsExtra中. 这还有另一个优势: 如果目标页面结构发生了变化,您只需要通过MS计算机重新编辑爬网规则,并且无需修改此示例中的Web爬网程序代码. 有关下载内容提取器的采集规则的方法,请参阅“ Python Instant Web爬网程序: API描述-下载内容提取器”.
4,采集器结果
您可以在项目目录中看到多个result **. xml文件,文件内容如下图所示:
5,摘要
由于信息采集规则是通过api下载的,因此这种情况的源代码非常简洁. 同时,整个程序框架变得非常通用,因为从外部注入了对*敏*感*词*性影响最大的采集规则.
6,GooSeeker开源代码采集源下载
1. GooSeeker开源Python即时网络采集器GitHub源
7,文档修改历史记录
2016-07-14: V1.0