python抓取动态网页(Python爬虫实战:爬取Drupal论坛帖子列表(一))

优采云 发布时间: 2021-10-16 11:11

  python抓取动态网页(Python爬虫实战:爬取Drupal论坛帖子列表(一))

  1 简介

  在之前的Python爬虫实战中:抓取Drupal论坛帖子列表,抓取一个用Drupal制作的论坛,是静态页面,比较容易抓取,即使直接解析html源文件,也可以抓取您需要的内容。相反,JavaScript 实现的动态网页内容无法从 html 源代码中抓取所需的内容,必须先执行 JavaScript。

  我们已经在 Python 爬虫中使用 Selenium+PhantomJS 来爬取 Ajax 和动态 HTML 内容。文章已经成功测试了动态网页内容的爬取方法。本文重写实验程序,使用开源Python爬虫指定的标准python内容提取器改代码。它非常简洁。

  二、技术要点

  我们在很多文章中都说过这个开源爬虫的目的:节省程序员的时间。关键是要节省编写提取规则的时间,尤其是调试规则。它可以节省时间。问题是在1分钟内快速生成用于网页内容提取的xslt。有一个解决方案。在本文中,我们使用京东网站作为测试目标,电子商务网站有很多动态内容,比如商品价格和评论数等,经常使用后加载方法。html源文件加载完成后,执行javascript代码填充动态内容。因此,本案例主要验证动态内容的爬取。

  另外,本文案例没有使用GooSeeker爬虫API,而是将MS Strategy生成的xslt脚本程序保存在本地文件中,在程序运行时读出该文件并注入gsExtractor提取器。以后会有一个特例来演示如何使用API

  综上所述,本例的两个技术点总结如下:

  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-windows\\bin\\phantomjs.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. 获取结果

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

  

  五、相关文件

  1. Python 即时网络爬虫项目:内容提取器的定义 6. 采集GooSeeker开源代码下载源

  1. GooSeeker 开源 Python 网络爬虫 GitHub 源码 7. 文档修改历史

  1, 2016-06-06: V1.0

  上一章爬取 Drupal 论坛帖子列表 下一章 Scrapy 架构的初步研究

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线