html怎么获得动态数据,html如何展示大量数据

首页 > 教育培训 > 作者:YD1662023-07-09 01:31:40

pyspider示例代码一:利用phantomjs解决js问题

本系列文章主要记录和讲解pyspider的示例代码,希望能抛砖引玉。pyspider示例代码官方网站是http://demo.pyspider.org/。上面的示例代码太多,无从下手。因此本人找出一下比较经典的示例进行简单讲解,希望对新手有一些帮助。

示例说明:

如果页面中部分数据或文字由js生成,pyspider不能直接提取页面的数据。pyspider获取页面的代码,但是其中的js代码phantomjs,解决js代码执行问题。

使用方法:

方法一:在self.crawl函数中添加fetch_type="js"调用phantomjs执行js代码。

方法二:为函数添加参数@config(fetch_type="js")。

示例代码:

1、www.sciencedirect.com网站示例

#!/usr/bin/env python

# -*- encoding: utf-8 -*-

# vim: set et sw=4 ts=4 sts=4 ff=unix fenc=utf8:

# Created on 2014-10-31 13:05:52

import re

from libs.base_handler import *

class Handler(BaseHandler):

'''

this is a sample handler

'''

crawl_config = {

"headers": {

"User-Agent": "BaiDu_Spider",

},

"timeout":300,

"connect_timeout":100

}

def on_start(self):

self.crawl('http://www.sciencedirect.com/science/article/pii/S1568494612005741',timeout=300,connect_timeout=100,

callback=self.detail_page)

self.crawl('http://www.sciencedirect.com/science/article/pii/S0167739X12000581',timeout=300,connect_timeout=100,

age=0, callback=self.detail_page)

self.crawl('http://www.sciencedirect.com/science/journal/09659978',timeout=300,connect_timeout=100,

age=0, callback=self.index_page)

@config(fetch_type="js")

def index_page(self, response):

for each in response.doc('a').items():

url=each.attr.href

#print(url)

if url!=None:

if re.match('http://www.sciencedirect.com/science/article/pii/\w $', url):

self.crawl(url, callback=self.detail_page,timeout=300,connect_timeout=100)

@config(fetch_type="js")

def detail_page(self, response):

self.index_page(response)

self.crawl(response.doc('#relArtList > li > .cLink').attr.href, callback=self.index_page,timeout=300,connect_timeout=100)

return {

"url": response.url,

"title": response.doc('.svTitle').text(),

"authors": [x.text() for x in response.doc('.authorName').items()],

"abstract": response.doc('.svAbstract > p').text(),

"keywords": [x.text() for x in response.doc('.keyword span').items()],

}

针对pyspider中看不到内容,再写爬虫脚本的时候,直接用phantomjs的方法

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.