1、安装scrapy

pip3 install scrapy

2、打开terminal,cd 到想要创建程序的目录下

3、创建一个scrapy项目

在终端输入:scrapy startproject my_first_scrapy(项目名)

4、在终端输入:cd my_first_scrapy  进入到项目目录下

5、新建爬虫:

输入: scrapy genspider chouti chouti.com  (chouti: 爬虫名称, chouti.com : 要爬取的网站的起始网址)

6、在pycharm中打开my_first_scrapy,就可以看到刚才创建的项目:

7、打开settings.py可以对项目相关参数进行设置,如设置userAgent:

8、打开chouti.py编写代码:

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

"""获取抽屉新热榜的标题和内容以及新闻地址保存到本地"""

importscrapyfrom scrapy.http importRequestfrom scrapy.http.response.html importHtmlResponsefrom ..items importMyFirstScrapyItemclassChoutiSpider(scrapy.Spider):

name= 'chouti'allowed_domains= ['chouti.com']

start_urls= ['http://chouti.com/']defparse(self, response):#print(response, type(response)) #

#print(response.text)

#解析文本内容, 提取标题和简介,地址

#去页面中找id=content-list的div标签,再去这个div下找class=item的div

items = response.xpath("//div[@id='content-list']/div[@class='item']")#"//"表示从html文件的根部开始找。"/"表示从儿子里面找。".//"表示相对的,及当前目录下的儿子里面找

for item initems:#当前目录下找class=part1的div标签,再找div标签下的a标签的文本信息text(),并且只取第一个

#a标签后面可以加索引,表示取第几个a标签,如第一个:a[0]

title = item.xpath(".//div[@class='part1']/a/text()").extract_first().strip() #去掉标题两端的空格

href = item.xpath(".//div[@class='part1']/a/@href").extract_first().strip() #取href属性

summary = item.xpath(".//div[@class='area-summary']/span/text()").extract_first()#print(1, title)

#print(2, href)

#print(3, summary)

item_obj = MyFirstScrapyItem(title=title, href=href, summary=summary) #实例化

yield item_obj #将数据交给pipelines

#获取页码

page_list = response.xpath("//div[@id='dig_lcpage']//a/@href").extract()for url inpage_list:

url= "https://dig.chouti.com%s" %urlyield Request(url=url, callback=self.parse) #下载页面内容

View Code

9、打开items.py写代码:

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

#Define here the models for your scraped items#

#See documentation in:#https://doc.scrapy.org/en/latest/topics/items.html

importscrapyclassMyFirstScrapyItem(scrapy.Item):#define the fields for your item here like:

#name = scrapy.Field()

#规则化:将要持久化的数据转化为某种格式

title =scrapy.Field()

href=scrapy.Field()

summary= scrapy.Field()

View Code

10、打开pipelines.py写代码:

"""1、先去类中找from_crawler

有:执行且必须返回一个当前类的对象

没有:不执行,则去执行构造方法__init__(self)并返回一个对象

2、再去执行"对象.其他方法""""

classMyFirstScrapyPipeline(object):def __init__(self, file_path):

self.f=None

self.file_path=file_path

@classmethoddeffrom_crawler(cls, crawler):"""初始化时,用于创建pipelines对象

:param crawler:

:return:"""file_path= crawler.settings.get("CHOUTI_NEWS_PATH") #存储文件的路径

returncls(file_path)defopen_spider(self, spider):"""打开文件

:param spider:提交数据过来的爬虫对象

:return:"""self.f= open(self.file_path, "a+", encoding="utf-8")defprocess_item(self, item, spider):""":param item: 爬虫中yield过来的item对象

:param spider:提交数据过来的爬虫对象

:return:"""self.f.write(item["href"] + "\n")

self.f.flush()#将内容强刷到硬盘进行保存

returnitemdefclose_spider(self, spider):"""关闭文件

:param spider:提交数据过来的爬虫对象

:return:"""self.f.close()

View Code

11、在settings.py中找到 ITEM_PIPELINES进行设置,并设置存储下载的新闻存储的文件路径:

12、运行爬虫项目,在终端输入:

scrapy crawl chouti(会打印日志)  或者 scrapy crawl chouti --nolog (不打印日志)

抽屉新热榜html源码,利用scrapy获取抽屉新热榜的标题和内容以及新闻地址保存到本地...相关推荐

  1. (含源码)利用NVIDIA VPI之透视变换

    (含源码)利用NVIDIA VPI之透视变换 更多精彩内容: https://www.nvidia.cn/gtc-global/?ncid=ref-dev-876561 文章目录 (含源码)利用NVI ...

  2. 直播带货系统源码利用FloatingActionButton实现 展开/折叠多级悬浮菜单

    直播带货系统源码利用FloatingActionButton实现 展开/折叠多级悬浮菜单的相关代码 1.大家看一下,我们最终提供出来的调用的示例: //初始化2个Item弹出菜单 val expand ...

  3. 一款好看的iapp捐赠榜单源码

    一款好看的iapp捐赠榜单源码 ☑️ 编号:ym473 ☑️ 品牌:无 ☑️ 语言:ThinkPHP ☑️ 大小:828KB ☑️ 类型:iapp捐赠榜单源码 ☑️ 支持:PC+WAP

  4. html5餐厅模拟经营游戏《新的开始》源码

    html5餐厅模拟经营游戏<新的开始>源码,玩家扮演一个餐厅女老板,根据客人的需要进行给出不同的食物,如果客人排队排久了,就会生气而走,大家可以感受一下做老板的艰辛和快乐,非常有意思! 完 ...

  5. Python+Selenium爬虫,如何取得新打开页面的源码?

    我在做一个python爬虫,使用了selenium库.我在一个网页中触发了一个click事件打开了一个新的网页,并没有新开窗口,然后我用driver.page_source得到的却是原来那个网页非新打 ...

  6. 【小程序源码】小游戏神器新UI版本带特效和音效,缩减版本微信小程序源码下载

    这是一款也是自带音效和特效的微信小程序源码 由多个小游戏组合而成,具体如下: 大话骰(带音效) 愤怒大叔(带音效,多个皮肤模板用户可选择) 指尖轮盘(带音效特效) 剪刀石头布(带音效特效) 789骰子 ...

  7. 利用爬虫获取猫眼电影热门前100数据

    利用爬虫获取猫眼电影热门前100数据 实现方法 1:访问网站,获取页面源码 2:解析页面 ,得到想要的数据 3:循环爬取多个页面 4:把数据写入本地文件 ''' 需求:爬取猫眼电影前100的电影信息 ...

  8. 比心app源码,html 获取时间

    比心app源码,html 获取时间相关的代码 <script type="text/javascript">var a = new Date();//时间戳var t ...

  9. 提供源码:java获取节假日、工作日,存入数据库,查找指定日期前一天,后一天。

    提供源码:java获取节假日.工作日,存入数据库,查找指定日期前一天,后一天. 码云地址: https://gitee.com/guyuanman/holiday 业务场景: 好多公司的业务在处理的时 ...

  10. 源码分享 | 一个聚合的今日热榜站

    喜欢的留个关注,干货不断 不知道大家每天都怎么看新闻的,我想很多人是通过微博热搜,今天就给大家体验一套源码,里面全是热搜,保真让你看不过来,最终成品如图所示! 正文开始 源码是二开的,因为之前的大佬将 ...

最新文章

  1. 启明云推SigmaStar SSD201 双网口开发板的双网口配置说明
  2. deletion in request load scenario
  3. python日期转化成周数_[转]浅析使用python计算两个日期间隔天数﹑周数和指定若干天后对应的日期等...
  4. 最实用的18个HTML5 API 教程大全,都在这里了
  5. __proto__和prototype 1
  6. Orchard Core 使用工作流处理页面提交
  7. C#.NET软件项目中程序开发外包经验分享【从接包者转变为发包者】
  8. VS2012 下载地址
  9. mySQL数据库中.frm和.myi和.myd和.ibd文件是什么文件?
  10. 我的python笔记06
  11. 使用idea将dev分支合并到master分支
  12. STM32——SD卡实验(SDIO方式)
  13. Mac系统制作U盘安装盘,不能识别U盘的情况
  14. ble理论(13) BT4.2 ble 广播详解
  15. 员工激励四大原则和十个措施
  16. Appium-desktop的下载安装
  17. Oracle的概念理解
  18. 什么是微信防火墙_09年奔驰E280有什么通病?月入多少能盘它?【诺诺情报站】...
  19. php如何实现短信提示,php怎么发短信通知
  20. 用python输出一张九九乘法表_如何用python输出九九乘法表?有哪些方法?

热门文章

  1. 读 Robert C. Solomon 之《哲学导论》
  2. mysql 加权_mysql/stats:加权平均值以突出平均值的差异
  3. 中国神话中的诸神辈分如何排
  4. 讓TQ2440也用上設備樹(1)
  5. 【vue网站优化】秒开网页
  6. 伊诺伊香槟分校计算机世界排名,2020年伊利诺伊大学香槟分校QS世界排名
  7. python中seek是什么意思_python中seek怎么用
  8. 【Spring Security Oauth2】构建资源服务器(二):授权管理(Web授权,注解授权:securedEnabled, prePostEnabled, jsr250Enabled)
  9. CODE VS 4939 欧拉函数 质因数启发式分解
  10. 【Minecraft】建立Bukkit/Spigot插件实时调试环境,并避免断点调试时客户端断开连接