xpath / // //a/@href 返回属性 //a/text() 返回文本 //div/* 返回所有元素 //a[@href]包含href的a //a[@href='xx'] //a[contains(@href,'xxx')] 模糊搜索 //a[not(contains(@href,'abc'))]
response.xpath('/html').extract() pagesource google浏览器中右击:copy xpath =//h1[@id='xxx']/span/text()
image.png
//*[@id='username']//text()
书中源码:https://github.com/scallingexcellence/scrapybook.git example: scrapy startproject properties cd properties vi items.py
image.png
scrapy genspider basic web #利用basic模板生成爬虫,限制在web
scrapy genspider -l 查看所有模板
以上语句生成的模板
image.png
更改basic.py
image.png
image.png
开始运行爬虫:scrapy crawl basic
修改item.py,用propertieitem替换
image.png
结果保持到文件
image.png
使用ItemLoader parse
image.png
ItemLoader中的用法
image.png
image.png
协议@,爬虫中的单元测试,运行:scrapy check basic
image.png
2 example:
image.png
image.png
多个URL:
image.png
水平和垂直爬取:
image.png
scrapy crawl manual -s CLOSESPIDER_TIMECOUNT=90 90秒后退出
3 exapmle
水平和垂直爬虫类crawl
image.png
image.png
爬虫,登陆,from_response?
image.png
image.png
4 example: login ??
parse_item用selector做源头,提升性能
image.png
5 example:https://www.jianshu.com/p/9f7540614b26
配置
scrapy settings --get CONCURRENT_REQUESTS scrapy settings -s CONCURRENT_REQUESTS=6 DOWNLOADS_DELAY CONCURRENT_ITEMS 每次请求并发数的最大文件数 DNSCACHE_ENABLED
image.png
HTTPCACHE_ENABLED 离线抓取 ROBOTSTXT_OBEY 是否参考robots.txt COOKIES_ENABLED IMAGES_STORE FILES_STORE FILES_EXPIRES REDIRECT_PRIORITY REDIRECT_MAX_TIMES
下载图片的配置
image.png
架构
image.png
加日期处理Pipeline
image.png
image.png
信号??
一个可以测量吞吐量和延迟的扩展
pip install trep
6 example:一个写入elasticsearch的pipline 7 example:pipeline使用google geocoding api来进行地理编码 8 example:pipeline 写入mysql 9 example:pipeline 写入redis 10 exapmle:pipeline进行CPU密集型和阻塞操作 computation.py @defer.inlineCallbacks??????? 11 example:调用sh
image.png
image.png
image.png
12 example:scrapyd