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

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,就可以看到刚才创建的项目:

4844afbe8a67b78c5ce282162abebe66.png

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

25ef8d2e44b989c67c49cb7c0c1ca003.png

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

05b0a69abffed9737af8c67ed3c17998909.jpg

4e4cb42636aed8da576b13996583c6a0150.jpg

#-*- 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写代码:

30d2e0f998f1c25aaeed49c8573ba8702d7.jpg

e2226e03e0f68681e602b9e27ecd794b3b7.jpg

#-*- 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写代码:

4ce1de666efa9e2917dd66aa994b7577a0d.jpg

2291887d86256bd23b1904a58878a2936de.jpg

"""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进行设置,并设置存储下载的新闻存储的文件路径:

4fc2f8e355586bd468fb560725663b1a.png

6fa07ba582bdb644105d86907c1bdb6c.png

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值