专门学习框架封装的各种功能的详细用法。
是爬虫中封装好的一个明星框架,功能:高性能的持久化存储,异步的数据下载,高性能的数据解析,分布式。
scrapy startproject 工程名 (XXPro:XXproject)
cd 工程名
这里不需要切换目录,在项目目录下即可。
是要爬取的网站。
scrapy genspider 爬虫文件名
在pycharm中直接执行是不管用的,无效。应该再在终端中执行
scrapy crawl 爬虫文件名 # 执行的是爬虫文件
创建好项目后,在项目的settings.py里更改老多的参数:
# rules
ROBOTSTXT_OBEY = False#显示指定类型的日志信息 而不显示其他乱七八糟的
LOG_LEVEL = 'ERROR'# 设置用户代理 浏览器类型
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"# 取消注释改行,意味着开启管道存储。
# 300表示优先级,数值越小优先级越高
ITEM_PIPELINES = {"weiboPro.pipelines.WeiboproPipeline": 300,
}
爬取B站视频的作者和视频名称
代码为项目下weibo.py的代码。想爬取微博但是失败了,改成爬B站
extract()可以将Selector对象中data参数存储的字符串提取出来对列表调用extract后,将列表的每一个Selector对象中的data对应的字符串提取了出来将列表转为字符串: .join方法
title = [......]
title = ''.join(title)
weibo.py 爬虫文件import scrapy# 导包失败:右键项目目录 => 将目标标记为 => 源代码根目录# 爬取微博失败了,返回为空。改为爬取B站了。
# 爬取B站的视频的名称和作者
class WeiboSpider(scrapy.Spider):name = "weibo"# allowed_domains = ["weibo"]start_urls = ["/"]def parse(self, response):author = []title = []div_list = response.xpath('//*[@id="i_cecream"]/div[2]/main/div[2]/div/div[1]/div')print("数据长度为", len(div_list))for div in div_list:# xpath返回的是列表,但是列表元素一定是Selector类型的对象# extract可以将Selector对象中data参数存储的字符串提取出来author=(div.xpath('//div[@class="bili-video-card__info--right"]//a/span[@class="bili-video-card__info--author"]/text()').extract())# 对列表调用extract后,将列表的每一个Selector对象中的data对应的字符串提取了出来title=(div.xpath('//div[@class="bili-video-card__info--right"]/h3/a/text()').extract())# 将列表转为字符串: .join方法# title = ''.join(title)print(author)print(title)print(len(author), len(title))
scrapy crawl weibo -o ./Bzhan.csv # weibo是爬虫文件名,./Bzhan.csv是保存到本地的路径+文件名
- 要求:只可以将parse方法的返回值存储到本地的文本文件中
- 注意:持久化存储对应的文本文件的类型只可以为:'json', 'jsonlines', 'jl', 'csv', 'xml', 'marshal', 'pickle
- 指令:scrapy crawl xxx -o filePath
- 好处:简介高效便捷
- 缺点:局限性比较强(数据只可以存储到指定后缀的文本文件中)
本文发布于:2024-03-09 11:50:10,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/1710234002135662.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |