Python进阶之Scrapy抓取阳光政务平台

  • 1. 目标
  • 2. 页面分析
  • 3. 示例代码
    • 1. 创建项目
    • 2. start.py
    • 3. items.py
    • 4. settings.py
    • 5. pipelines.py
    • 6. sun.py
  • 4. 注意事项

1. 目标

    1. 爬取http://wz.sun0769.com/political/index/politicsNewest
    1. 网站标题及详情内容

2. 页面分析

  • 1.列表页网址http://wz.sun0769.com/political/index/politicsNewest?id=1&page=1
    通过修改page={}来改变页面,列表内容网页源码中有。
    本程序通过找到翻页键实现找到下一页链接发起请求实现翻页。
  • 2.详情页网址可以通过检查获取href进行拼接
    //ul[@class=‘title-state-ul’]//li/span[3]/a/@href
  • 3.详情页内容可以通过pre标签获得

3. 示例代码

1. 创建项目

scrapy startproject sunSpider
cd sunSpider
scrapy genspider sun sun0769.com

2. start.py

from scrapy import cmdline# cmdline.execute(['scrapy','crawl','sun'])
cmdline.execute('scrapy crawl sun'.split())

3. items.py

# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.htmlimport scrapy
# 字段名一定要在items里边定义,防止正式程序写错
class SunspiderItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()title = scrapy.Field()href = scrapy.Field()content = scrapy.Field()

4. settings.py

BOT_NAME = 'sunSpider'
SPIDER_MODULES = ['sunSpider.spiders']
NEWSPIDER_MODULE = 'sunSpider.spiders'
LOG_LEVEL = 'WARNING'
DEFAULT_REQUEST_HEADERS = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'}
ITEM_PIPELINES = {'sunSpider.pipelines.SunspiderPipeline': 300,
}

5. pipelines.py

from itemadapter import ItemAdapter
import reclass SunspiderPipeline:def process_item(self, item, spider):item['content'] = self.parse_content(item['content'])print(item)return item# 定义一个方法处理格式问题# 用正则记得导入模块def parse_content(self,content):content = re.sub(r'\r\n','',content)return content

6. sun.py

import scrapy
# 设置目录根,导入item中的类
from sunSpider.items import SunspiderItem
import timeclass SunSpider(scrapy.Spider):name = 'sun'allowed_domains = ['sun0769.com']# 确定初始页面为http://wz.sun0769.com/political/index/politicsNewest?id=1&page={}start_urls = ['http://wz.sun0769.com/political/index/politicsNewest?id=1']def parse(self, response):li_list = response.xpath('sc')for li in li_list:# 创建类的实例对象item = SunspiderItem()# 用.extract_first()获取不带标签的文本数据item['title'] =li.xpath('./span[3]/a/text()').extract_first()item['href'] = 'http://wz.sun0769.com' + li.xpath('./span[3]/a/@href').extract_first()# print(item)# 向详情页发起请求并返回数据# 设置数据访问间隔,否则会被反爬time.sleep(3)yield scrapy.Request(url=item['href'],callback=self.parse_detail,# 传递字典数据meta={'item':item})# 找到翻页键对应url,开始进行翻页next_url = 'http://wz.sun0769.com' + response.xpath('//div[@class="mr-three paging-box"]/a[2]/@href').extract_first()# print(next_url)if next_url is not None:yield scrapy.Request(url=next_url,# 数据重新丢给parse重新处理callback=self.parse,)def parse_detail(self,response):# 获取字典中的数据item = response.meta.get('item')# 获取详情页数据item['content'] = response.xpath('//div[@class="details-box"]/pre/text()').extract_first()# print(item)yield item

4. 注意事项

  • 1.sun.py中字典的创建是导入items里的类,通过创建类的实例对象来创建的
  • 2.sun.py中的字段要与items里设置的相同,未设置的需要进行设置
  • 3.items的导入要设置项目为根原目录,才能直接.item import 方式导入,否则要根据文件夹顺序逐层.进去
  • 4.熟记.extarct_first(),实现取出不含标签文本的功能
  • 5.采取翻页的方法进入下一页可以简化代码,但是会比人工设置访问页面的方法增加一些页面的点击。快速的页面点击会导致反爬,注意使用的时候要设置延时时间。

Python进阶之Scrapy抓取阳光政务平台相关推荐

  1. Python进阶之Scrapy抓取苏宁图书数据

    Python进阶之Scrapy抓取苏宁图书数据 1. 需求 2. 代码示例: 创建项目 start.py settings.py iterms.py snb.py pipelines.py 3. 注意 ...

  2. python怎么爬虎牙_使用python爬虫框架scrapy抓取虎牙主播数据

    前言 本文利用python的scrapy框架对虎牙web端的主播.主播订阅数.主播当前观看人数等基本数据进行抓取,并将抓取到的数据以csv格数输出,以及存储到mongodb中 思路 观察虎牙网站后确认 ...

  3. 爬虫进阶:Scrapy 抓取 boss 直聘、拉勾心得经验

    关于使用Scrapy的体会,最明显的感受就是这种模板化.工程化的脚手架体系,可以说是拿来即可开箱便用,大多仅需按一定的规则套路配置,剩下的就是专注于编写跟爬虫业务有关的代码.绝大多数的反反爬虫策略,大 ...

  4. python模拟用户登录爬取阳光采购平台数据

    阳光采购平台每月初会把当月的价格挂到平台上,现模拟用户登录平台,将需要的数据保存到csv文件和数据库,并且发送给指定人员. 开发环境搭建: 网上教程一大堆,不赘述了.安装好后需要安装一些必须的库,如下 ...

  5. Python进阶之Scrapy利用ImagesPipeline抓取汽车之家宝马5系缩略图

    Python进阶之Scrapy利用ImagesPipeline抓取汽车之家宝马5系缩略图 1. 创建项目 2. 使用ImagesPipeline爬取数据 items.py setings.py aut ...

  6. python scrapy 抓取脚本之家文章(scrapy 入门使用简介)

    老早之前就听说过python的scrapy.这是一个分布式爬虫的框架,可以让你轻松写出高性能的分布式异步爬虫.使用框架的最大好处当然就是不同重复造轮子了,因为有很多东西框架当中都有了,直接拿过来使用就 ...

  7. python爬虫电影资源_【Python爬虫】第十六次 xpath整站抓取阳光电影网电影资源

    [Python爬虫]第十六次 xpath整站抓取阳光电影网电影资源# 一.解析电影url # 请求15题构造出的每个电影菜单的分页url,解析出每个电影url # 二.xpath解析电影资源 # 对第 ...

  8. python爬虫框架:scrapy抓取企业名录

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  9. scrapy抓取淘宝女郎

    scrapy抓取淘宝女郎 准备工作 首先在淘宝女郎的首页这里查看,当然想要爬取更多的话,当然这里要查看翻页的url,不过这操蛋的地方就是这里的翻页是使用javascript加载的,这个就有点尴尬了,找 ...

  10. scrapy抓取的中文结果乱码解决办法

    使用scrapy抓取的结果,中文默认是Unicode,无法显示中文. 中文默认是Unicode,如:\u5317\u4eac\u5927\u5b66 解决办法,原文:http://www.aisun. ...

最新文章

  1. [特征工程系列二]显性特征的基本处理方法
  2. mysql 造1亿条记录的单表--大数据表
  3. HTML CSS JS之间的关系
  4. WinServer2012中怎样设置静态IP
  5. Android 中文API合集(4)(102篇)(chm格式)
  6. Mac OS X / IOS 内存管理机制简要说明
  7. 连表时数据量翻倍问题
  8. 飞机大战python_飞机大战python
  9. 蓝桥杯0027 通信密码
  10. kindle 安卓 app下载的电子书放在什么文件夹?
  11. uniapp微信小程序引用标准版交易组件
  12. Android加密文件系统
  13. 5e服务器显示fps被锁定,csgo强制被锁60帧 被锁60fps解决方法
  14. Multi-Exemplar Affinity Propagation
  15. visio2002无法安装(您必须首先安装Enterprise Architect Edition of visual Studio.Net2003)的解决方案
  16. 观视界Grandvision EDI项目案例
  17. 统计复习:伯努利分布、二项分布、几何分布、超几何分布、泊松分布
  18. 春风十里_C调简单版_酷音小伟
  19. Flowable实用技巧-自动完成首个UserTask
  20. 自然语言处理NLP星空智能对话机器人系列:Facebook StarSpace框架初体验

热门文章

  1. WordCloud库的使用
  2. 解决“各种”软件图标显示错误问题
  3. 数据结构与算法--线性表
  4. Taro小程序分享功能
  5. 三维激光雷达点云处理分类及目标检测综述
  6. 百度php获取当前经纬度,百度地图获取经纬度的示例
  7. PyS60 console中文乱码问题
  8. Win7 远程桌面限制IP
  9. php获取网页内指定内容,PHP中获取某个网页或文件内容的方法
  10. 虚拟机opnsense作为dhcp服务器,在OPNsense中,通过主机名或域名访问内部设备