scrapy 保存html页面,28.用配合scrapy的方式爬取本地保存的html

使用splash抓取js动态加载的网页,输出网页源代码,以html的格式保存到本地,然后编写个py文件抓取自己想要的信息,又希望自己的抓取方式能够复用到scrapy-splash爬虫项目项目中。

可以使用下面的方式抓取本地的html文件:

# -*- coding: utf-8 -*-

# @AuThor : frank_lee

from scrapy.selector import Selector

htmlfile = open("zfcaigou.html", 'r', encoding='utf-8')

htmlhandle = htmlfile.read()

pagedata = Selector(text=htmlhandle)

infodata = pagedata.css(".items p")

for infoline in infodata:

city = infoline.css(".warning::text").extract()[0]

issuescate = infoline.css(".warning .limit::text").extract()[0]

title = infoline.css("a .underline::text").extract()[0]

publish_date = infoline.css(".time::text").extract()[0]

print(city+issuescate+publish_date)

首先说下网页源代码的获取:

下面这张图,对于已经安装splash的童鞋应该不陌生,在1处输入想要抓取的动态网页的网址,点一下2处。

071815846c50?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

稍等片刻,网页的返回结果就会呈现出渲染截图、HAR加载统计数据和网页的源代码。

071815846c50?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

071815846c50?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

将上图中方框内网页源代码保存到本地HTML文件里,用浏览器打开就可以像正常网页一样对其分析,抓取。如果觉得上面方式不够高级,配置一下scrapy的settings文件,和spiders下的文件只抓网页也是可以的,像下面这样,执行下,也会输出网页源代码。

# -*- coding: utf-8 -*-

import scrapy

from scrapy_splash import SplashRequest

class ZfcaigouSpider(scrapy.Spider):

name = 'zfcaigou'

allowed_domains = ['www.zjzfcg.gov.cn']

start_urls = ['http://www.zjzfcg.gov.cn/purchaseNotice/index.html?categoryId=3001']

def start_requests(self):

for url in self.start_urls:

yield SplashRequest(url=url, callback=self.parse,

args={'wait': 1}, endpoint='render.html')

def parse(self, response):

print(response.body.decode("utf-8"))

pass

下面这张图片就是保存为html文件后 使用pycharm打开的,按下F12就可以对其进行分析了,使用文章开始处的代码就可以将我们需要的信息通过本地的html文件输出或保存。

071815846c50?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation