改写parse函数

实现功能:

1.获取文章列表页中的文章url并交给scrapy下载后,交给解析函数进行具体字段的解析
2.获取下一页的url并交给scrapy进行下载,下载完成后交给parse

提取一页列表中的文章url

#解析列表页中所有文章的url,遍历出来
def parse(self, response):
# 解析列表页中的所有url并交给scrapy下载后进行解析
post_urls = response.css('#archive .floated-thumb .post-thumb a::attr(href)').extract()
for post_url in post_urls:
print(post_url)

调试输出结果

如何让scrapy进行下载

引入request对象

from scrapy.http import Request

修改提取字段类类名为parse_detail,引入parse类进行域名拼接,yield下载

from urllib import parse
    def parse(self, response):

        #获取文章列表页中的文章url并交给解析函数进行具体字段的解析
#获取下一页的url并交给scrapy进行下载,下载完成后交给parse
post_urls = response.css('#archive .floated-thumb .post-thumb a::attr(href)').extract()
for post_url in post_urls:
#yield Request(url=post_url,callback=self.parse_detail)
yield Request(url=parse.urljoin(response.url, post_url),callback=self.parse_detail) #域名拼接 下载 下载完成后调用parse_detail解析字段

获取下一页并交给scrapy进行下载

        #提取下一页并交给scrapy下载
next_url = response.css('.next.page-numbers::attr(href)').extract_first("")#空格去掉表示同时拥有两个属性
if next_url:
yield Request(url=parse.urljoin(response.url, next_url), callback=self.parse)  #继续调用parse解析出列表页中具体文章的url

调试前修改start_url为all-posts

调试结果

最新文章

  1. BMW
  2. mysql学习笔记 第六天
  3. Oracle语句优化之一
  4. ffmpeg-20160517-git-bin-v2
  5. json数据实际应用
  6. js 新窗口打开
  7. Codeforces Educational Codeforces Round 15 C. Cellular Network
  8. Swing多线程编程(转)
  9. 让Xcode Lua 语法高亮
  10. .dll 文件编写和使用
  11. 【原创】Android AOP面向切面编程AspectJ
  12. 用m4 macros创建文本文件
  13. Oracle和Mysql获取uuid的方法对比
  14. 黑盒测试实践-day02
  15. HTTP的Referrer和Referrer Policy设置
  16. CentOS系统中文改英文
  17. zabbix3.4.7 饼图显示问题
  18. 2018.09.14 codeforces364D(随机化算法)
  19. 【python】列出http://www.cnblogs.com/xiandedanteng中所有博文的标题
  20. spring boot 使用thymeleaf模版 报错:org.thymeleaf.exceptions.TemplateInputException

热门文章

  1. Replication--Alwayson+复制发布
  2. google chrome 调试技巧:监控 DOM 元素被修改
  3. Razor TagHelper实现Markdown转HTML
  4. 在.net Core中使用StackExchange.Redis 2.0
  5. sql 统计常用的sql
  6. MySQL不带where条件的UPDATE和DELETE 限制操作说明
  7. 【《Effective C#》提炼总结】提高Unity中C#代码质量的22条准则
  8. How to Mount a Remote Folder using SSH on Ubuntu
  9. 【转】【C++专题】C++ sizeof 使用规则及陷阱分析
  10. 2016级算法第一次练习赛-C.斐波那契进阶