美文网首页
28.用配合scrapy的方式爬取本地保存的html

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

作者: starrymusic | 来源:发表于2019-04-02 11:12 被阅读0次

使用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处。



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




将上图中方框内网页源代码保存到本地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文件输出或保存。


相关文章

网友评论

      本文标题:28.用配合scrapy的方式爬取本地保存的html

      本文链接:https://www.haomeiwen.com/subject/aqpwbqtx.html