Python爬虫实战(四): 豆瓣小组话题数据采集-动态网页

优采云 发布时间: 2020-08-09 07:20

  1,简介

  注意: 在上一篇文章“ 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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线