python爬虫
2018-08-10 11:16:17来源:博客园 阅读 ()
资料:
1.小白进阶之Scrapy第一篇
https://cuiqingcai.com/3472.html
2.Scrapy入门教程
http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html#id2
3.B站 --Python网络爬虫实战 Scrapy
https://www.bilibili.com/video/av7635196/?p=5
4.scrapy-redis介绍(一)
https://blog.csdn.net/hjhmpl123/article/details/53292602
安装:
略,在python找
快捷键
Ctrl+Shift+d肆
过程:
1.scrapy项目创建
scrapy startproject XXXXX XXXXX代表你项目的名字
结构:
scrapy.cfg: 项目的配置文件
xxxx/: 该项目的python模块。之后您将在此加入代码。
xxxx/items.py: 项目中的item文件.
xxxx/pipelines.py: 项目中的pipelines文件.
xxxx/settings.py: 项目的设置文件.
xxxx/spiders/: 放置spider代码的目录.
2.scrapy shell #参考: https://segmentfault.com/a/1190000013199636?utm_source=tag-newest
# https://www.cnblogs.com/zhaof/p/7189860.html
在shell使用选择器,便于获取xpath,可以配合网页路径
scrapy shell "http://www.itcast.cn/channel/teacher.shtml"
3.Feed exports:
最简单存储爬取的数据的方式是使用
scrapy crawl dmoz -o items.json
该命令将采用 JSON 格式对爬取的数据进行序列化,生成 items.json 文件。
4.通用爬虫(Broad Crawls)
5.获取标签下多层结构所有文本 #参考: https://blog.csdn.net/zhengxiangwen/article/details/73865267
response.xpath('//div[@class="post-full-text contents"]//text()').extract()
scrapy执行流程
...
基类scrapy.Spider介绍
属性:
name: #要求唯一
allowed_domains: #允许域名
start_urls:
custom_settings:个性化设置,会覆盖全局的设置
crawler:抓取器,spider将绑定到上面
settings:配置实例,包含工程中所有的配置变量
logger:日志实例
方法:
from_crawler :类方法,创建spider
start_requests():生成初始requests
make_requests_from_url(url):根据url生成一个request
parse(requests):解析网页内容
log(message[,level,component]):记录日志,
self.logger.info("visited success")
closed(reason):当spider关闭时候跳跃的方法
子类:
CrawlSpider:最常见的spider,用来抓取普通网页
比起基类增加2个成员,
rules:定义了抓取规则--连接怎么跟踪,使用哪一个parse函数解析此连接
parse_start_url(response):解析初始url的相应
XMLFeedSpider: #下面的类不写了,放不进嘴里,根本不用嚼
...
request参数: #https://www.cnblogs.com/thunderLL/p/6551641.html
callback:回调
url: #在这里卡住了,因为要的是str,我传入的是队列
meta(dict):指定Request.meta属性的初始值。
method(string):HTTP请求的方法,默认为GET
命令:
scrapy startproject XXXXX #创建项目
scrapy crawl csdn -o items.json #执行存储json数据
选择器:
response.xpath('//ol/li').xpath('@data-item-id').extract()[0]
response.xpath('//article/h1/text()').extract()[0]
response.css('p.TweetTextSize.TweetTextSize--normal.js-tweet-text.tweet-text::text').extract()
response.xpath('//ol/li').css('p.TweetTextSize.TweetTextSize--normal.js-tweet-text.tweet-text *::text').extract()
scrapy_redis 分布式抓取
问题:
1.在windows环境,运行项目出现 ModuleNotFoundError: No module named 'win32api' 错误
#https://blog.csdn.net/little_sow/article/details/46408931
原因:少pywin32库, 下载安装正常
命令语句:
保存到文件
filename = response.url.split("/")[-2]
with open(filename, 'wb') as f:
f.write(response.body)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 备战面试,牢记这份Java面经,大厂在向你招手「含PDF文档资 2020-05-21
- 分享一些获得大厂offer:小技巧+面试流程+面试建议+面试资料 2020-05-07
- 2020华为春招Java软件开发岗华为南京研究所公共开发部+面经 2020-05-07
- 当Java与Python相比还有哪些优势 2020-05-03
- java和python的比较 2020-04-29
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash