Python爬虫实战(2):爬取京东商品列表

优采云 发布时间: 2022-05-11 06:50

  Python爬虫实战(2):爬取京东商品列表

  

  1.引言

  在上一篇,爬取了一个用Drupal做的论坛,是静态页面,抓取比较容易,即使直接解析html源文件都可以抓取到需要的内容。相反,JavaScript实现的动态网页内容,无法从html源代码抓取需要的内容,必须先执行JavaScript。

  我们在Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容一文已经成功检验了动态网页内容的抓取方法,本文将实验程序进行改写,使用开源Python爬虫规定的标准python内容提取器,把代码变得非常简洁。

  2.技术要点

  我们在多个文章说过本开源爬虫的目的:节省程序员的时间。关键是省去编写提取规则的时间,尤其调试规则很花时间,节省时间问题在1分钟快速生成用于网页内容提取的xslt一文已经有了解决方案,本文我们用京东网站作为测试目标,而电商网站都有很多动态内容,比如,产品价格和评论数等等,往往采用后加载的方式,在html源文档加载完成以后再执行javascript代码把动态内容填写上,所以,本案例主要验证动态内容的抓取。

  另外,本文案例没有使用GooSeeker爬虫API,而是把MS谋数台生成的xslt脚本程序保存在本地文件中,在程序运行的时候把文件读出来注入到gsExtractor提取器。后续会有专门的案例演示 API的使用方法。

  总之,本示例两个技术要点总结如下:

  从本地文件读取xlst程序

  把xlst注入到提取器gsExtractor中,利用xslt从网页上一次提取性多个字段内容。

  3.Python源代码

  <p style="margin-top: 5px; margin-bottom: 5px; line-height: 1.75em;"># -*- coding:utf-8 -*- # 爬取京东商品列表, 以手机商品列表为例# 示例网址:http://list. <br />jd.com/list.html?cat=9987,653,655&page=1&JL=6_0_0&ms=5# crawler_jd_list.py# <br />版本: V1.0from urllib import requestfrom lxml import etreefrom selenium import <br />webdriverfrom gooseeker import gsExtractorimport timeclass Spider:<br />    def __init__(self):<br />        self.scrollpages = 0<br />        self.waittime = 3<br />        self.phantomjsPath = 'C:\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe'<br /><br />    def getContent(self, url):<br />        browser = webdriver.PhantomJS( executable_path = self.phantomjsPath )<br />        browser.get(url)<br />        time.sleep(self.waittime)<br />        html = browser.execute_script("return document.documentElement.outerHTML")<br />        doc = etree.HTML(html)<br />        jdlistExtra = gsExtractor()<br />        jdlistExtra.setXsltFromFile("jd_list.xml")<br />        output = jdlistExtra.extract(doc)<br />        return output<br /><br />    def saveContent(self, filepath, content):<br />        file_obj = open(filepath, 'w', encoding='UTF-8')<br />        file_obj.write(content)<br />        file_obj.close()url = 'http://list.jd.com/list.html?cat=9987,653,655&page=1&JL=<br />        6_0_0&ms=5'jdspider = Spider()result = jdspider.getContent(url)jdspider.<br />        saveContent('京东手机列表_1.xml', str(result))<br /></p>

  源代码下载位置请看文章末尾的GitHub源。

  4.抓取结果

  运行上面的代码,就会爬取京东手机品类页面的所有手机型号、价格等信息,并保存到本地文件“京东手机列表_1.xml”中。我们用浏览器打开这个结果文件,会看到如下的内容:

  

  5.相关文档

  1,Python即时网络爬虫项目: 内容提取器的定义

  6.集搜客GooSeeker开源代码下载源

  1.GooSeeker开源Python网络爬虫GitHub源

  7.文档修改历史

  1.2016-06-06:V1.0

  End.

  作者:fullerhua (中国统计网特邀认证作者)

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线