内容简述:
一:Scrapy Shell
二:yield item和请求
三:请求传参-高级请求
一:Scrapy Shell
运行在终端的工具,用来调试scrapy。可以在未启动spider的情况下尝试及调试代码,也可以用来测试XPath或CSS表达式。
简单使用—糗事百科
scrapy shell “http://www.baidu.com/”
【温馨提示】:当咱们有时加载https请求时,有可能会报错
问题描述:[<twisted.python.failure.Failure twisted.internet.error.ConnectionDone: Connection was closed cleanly.>]
解决方案:
第一步: scrapy shell -s USER_AGENT='Mozilla/5.0'
第二步:fetch(‘url’)
示例参考: fetch("https://www.qiushibaike.com")
A-response对象
属性
text:字符串格式的html body:二进制格式的html encoding:响应编码
url:所请求的url status:响应状态码 headers:响应头
方法:
xpath():据xpath获取所有selector对象(scrapy内部封装的一个类的对象)的列表
例:获取糗事百科用户名
name_list=response.xpath('//div[@class="author clearfix"]//img/@alt')
print(len(name_list)) print(name_list.extract())
print(name_list.extract()[0]) print(name_list.extract_first())
css():获取符合要求的所有selector对象的列表
获取内容
name_list=response.css('#content-left a > h2::text')接着extract()
获取属性
css_list=response.css('#content-left a > img::attr(src)')接着extract()
一般不使用,因为中间scrapy会将这个选择器给翻译成xpath再去解析
selector对象
xpath('./'):从当前节点向下开始查找
css():和上面的response的方式一样
extract():将对象转化为unicode字符串
extract_first():如果xpath获取不到内容extract_first()返回None,extract()报错
B-Item对象
类字典对象,用法和字典一样,将这个对象转化为字典 stu = dict(stu)
二: yield item和请求
校花网 http://www.xiaohuar.com/hua/
管道的后期处理:数据的存储|下载
【温馨提示】写好pipeline的时候,需要在settings文件中打开一个配置
ITEM_PIPELINES = { 'huaproject.pipelines.HuaprojectPipeline':300, }
第一个:处理的管道
第二个:优先级,越小优先级越高(0-1000)
多页面抓取及图片批量下载
url规律
第一页list-1-0.html
第二页list-1-1.html
第n页list-1-(n-1).html
三:请求传参【高级请求】
如果一个页面不能将一个item的所有信息全部拿到,需要再次发送请求,再次解析才能将item的所有信息拿到。这种情况怎么办?
网友评论