资讯专栏INFORMATION COLUMN

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

shevy / 2314人阅读

摘要:,源代码爬取京东商品列表,以手机商品列表为例示例网址版本京东手机列表源代码下载位置请看文章末尾的源。,抓取结果运行上面的代码,就会爬取京东手机品类页面的所有手机型号价格等信息,并保存到本地文件京东手机列表中。

1,引言

在上一篇《python爬虫实战:爬取Drupal论坛帖子列表》,爬取了一个用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源代码
# -*- coding:utf-8 -*- 
# 爬取京东商品列表, 以手机商品列表为例
# 示例网址:http://list.jd.com/list.html?cat=9987,653,655&page=1&JL=6_0_0&ms=5
# crawler_jd_list.py
# 版本: V1.0

from urllib import request
from lxml import etree
from selenium import webdriver
from gooseeker import gsExtractor
import time

class Spider:
    def __init__(self):
        self.scrollpages = 0
        self.waittime = 3
        self.phantomjsPath = "C:phantomjs-2.1.1-windowsinphantomjs.exe"

    def getContent(self, url):
        browser = webdriver.PhantomJS( executable_path = self.phantomjsPath )
        browser.get(url)
        time.sleep(self.waittime)
        html = browser.execute_script("return document.documentElement.outerHTML")
        doc = etree.HTML(html)
        jdlistExtra = gsExtractor()
        jdlistExtra.setXsltFromFile("jd_list.xml")
        output = jdlistExtra.extract(doc)
        return output

    def saveContent(self, filepath, content):
        file_obj = open(filepath, "w", encoding="UTF-8")
        file_obj.write(content)
        file_obj.close()

url = "http://list.jd.com/list.html?cat=9987,653,655&page=1&JL=6_0_0&ms=5"
jdspider = Spider()
result = jdspider.getContent(url)
jdspider.saveContent("京东手机列表_1.xml", str(result))

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

4,抓取结果

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

5,相关文档

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

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

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

7,文档修改历史

1,2016-06-08:V1.0

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/45476.html

相关文章

  • Python: xml转json

    摘要:,实验用的文件我们使用爬虫实战爬取京东商品列表一文的结果文件,爬虫爬取的结果保存在京东手机列表文件中。,相关文档,即时网络爬虫项目内容提取器的定义,爬虫实战爬取京东商品列表,集搜客开源代码下载源,开源网络爬虫源,文档修改历史,首次发布 showImg(https://segmentfault.com/img/bVyf6R); 1,引言 GooSeeker早在9年前就开始了Semanti...

    _Suqin 评论0 收藏0
  • Python: xml转json

    摘要:,实验用的文件我们使用爬虫实战爬取京东商品列表一文的结果文件,爬虫爬取的结果保存在京东手机列表文件中。,相关文档,即时网络爬虫项目内容提取器的定义,爬虫实战爬取京东商品列表,集搜客开源代码下载源,开源网络爬虫源,文档修改历史,首次发布 showImg(https://segmentfault.com/img/bVyf6R); 1,引言 GooSeeker早在9年前就开始了Semanti...

    sourcenode 评论0 收藏0
  • 手把手教你写电商爬虫-第五课 京东商品评论爬虫 一起来对付反爬虫

    摘要:和前面几节课类似的分析这节课就不做了,对于分页,请求什么的,大家可以直接参考前面的四节课,这一刻主要特别的是,我们在采集商品的同时,会将京东的商品评价采集下来。 系列教程: 手把手教你写电商爬虫-第一课 找个软柿子捏捏 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫 手把手教你写电商爬虫-第三课 实战尚妆网AJAX请求处理和内容提取 手把手教你写电商爬虫-第四课 淘宝网商品爬...

    jsummer 评论0 收藏0
  • 手把手教你写电商爬虫-第五课 京东商品评论爬虫 一起来对付反爬虫

    摘要:和前面几节课类似的分析这节课就不做了,对于分页,请求什么的,大家可以直接参考前面的四节课,这一刻主要特别的是,我们在采集商品的同时,会将京东的商品评价采集下来。 系列教程: 手把手教你写电商爬虫-第一课 找个软柿子捏捏 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫 手把手教你写电商爬虫-第三课 实战尚妆网AJAX请求处理和内容提取 手把手教你写电商爬虫-第四课 淘宝网商品爬...

    forsigner 评论0 收藏0

发表评论

0条评论

shevy

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<