scrapy的分页(翻页处理)
import scrapy
from bs4 import BeautifulSoupclass BookSpiderSpider(scrapy.Spider):name = 'book_spider'allowed_domains = ['17k.com']start_urls = ['https://www.17k.com/all/book/2_0_0_0_0_0_0_0_1.html']"""后边会解释这个start_requests方法是肿么肥事"""def start_requests(self):for url in self.start_urls:yield scrapy.Request(url=url,callback=self.parse)def parse(self, response, **kwargs):print(response.url)soup = BeautifulSoup(response.text, 'lxml')trs = soup.find('div', attrs={'class': 'alltable'}).find('tbody').find_all('tr')[1:]for tr in trs:book_type = tr.find('td', attrs={'class': 'td2'}).find('a').textbook_name = tr.find('td', attrs={'class': 'td3'}).find('a').textbook_words = tr.find('td', attrs={'class': 'td5'}).textbook_author = tr.find('td', attrs={'class': 'td6'}).find('a').textprint(book_type, book_name, book_words, book_author)#break"""下面这个是xpath解析的方式"""# trs = response.xpath("//div[@class='alltable']/table/tbody/tr")[1:]# for tr in trs:# type = tr.xpath("./td[2]/a/text()").extract_first()# name = tr.xpath("./td[3]/span/a/text()").extract_first()# words = tr.xpath("./td[5]/text()").extract_first()# author = tr.xpath("./td[6]/a/text()").extract_first()# print(type, name, words, author)"""1 找到下一页的url,请求到下一页 分页逻辑 这个逻辑是最简单的那种线性的一直爬"""# next_page_url = soup.find('a', text='下一页')['href']# if 'javascript' not in next_page_url:# yield scrapy.Request(# url=response.urljoin(next_page_url),# method='get',# callback=self.parse# )# 2 残暴的分页逻辑"""拿到所有的url,就发送请求 会经过引擎、调度器(集合 队列) 完成这里的去重工作,交给下载器,再返回给爬虫,但是那个start_url还是会重复,重复的原因是继承了Spider这个类在于父类的方法有dont_filter=True这个东西所以这里要重写Spider类里面的start_requests的方法,默认就过滤了这样就解决了start_url重复的问题"""# # a_list = soup.find('div', attrs={'class': 'page'}).find_all('a')for a in a_list:if 'javascript' not in a['href']:yield scrapy.Request(url=response.urljoin(a['href']),method='get',callback=self.parse)
scrapy的分页(翻页处理)相关推荐
- 34.scrapy解决爬虫翻页问题
34.scrapy解决爬虫翻页问题 参考文章: (1)34.scrapy解决爬虫翻页问题 (2)https://www.cnblogs.com/lvjing/p/9706509.html (3)htt ...
- [Python Scrapy爬虫] 二.翻页爬取农产品信息并保存本地
前面 "Python爬虫之Selenium+Phantomjs+CasperJS" 介绍了很多Selenium基于自动测试的Python爬虫程序,主要利用它的xpath语句,通过分 ...
- scrapy模拟浏览器翻页爬取智联
智联爬取中,页码的数字和url是不匹配的,因此盲目的拼接url会造成错误,因此可以采用模拟浏览器爬取网页 要模拟浏览器需要知道scrapy流程,简图如下: 这里只是简单的写一些伪码,设计的数据清洗部分 ...
- 评论后的Ajax和刷新分页,Wordpress Ajax 评论分页/翻页 – Fatesinger
WordPress 升级到4.4版本后源代码分页函数失效.只需要给paginate_comments_links函数加上个total参数就可以了.代码已更新. 如果某篇文章评论特别多的时候,我们可以启 ...
- Scrapy框架items数据建模、翻页请求、requests对象请求、meta参数的使用
1. 数据建模 通常在做项目的过程中,在items.py中进行数据建模 1.1 为什么建模 定义item即提前规划好哪些字段需要抓,防止手误,因为定义好之后,在运行过程中,系统会自动检查 配合注释一起 ...
- oracle数据库如何写翻页_ORACLE数据库分页查询/翻页 最佳实践
ORACLE数据库分页查询/翻页 最佳实践 一.示例数据: Select Count(*) From dba_objects ; ----------------------------------- ...
- 用AjaxPro实现无刷新翻页效果及数据库分页技术介绍
在看本文之前,建议查看本人的系列文章: <AjaxPro与服务器端交互过程中如何传值>:http://blog.csdn.net/zhoufoxcn/archive/2008/01/05/ ...
- springboot:实现分页查询,以及翻页功能
在pom.xml中引入依赖 <!-- 分页查询插件 --><dependency><groupId>com.github.pagehelper</groupI ...
- 倒序查询_mysql大表分页查询翻页优化方案
mysql分页查询是先查询出来所有数据,然后跳过offset,取limit条记录,造成了越往后的页数,查询时间越长 一般优化思路是转换offset,让offset尽可能的小,最好能每次查询都是第一页, ...
最新文章
- 我和我的Android
- jmeter4.0 执行jmeter_server.bat报错
- java技术_JAVA-JDBC技术
- ZOJ 1151——Word Reversal
- jdbc 执行oracle命令,JDBC操作oracle
- 关于机器学习的最佳科普文章:《从机器学习谈起》
- 使用bat快速创建cocos2d-x模板
- XTP: 从XTP看Rust与C++接口FFI通信
- 小软件项目开发的管理
- mac安装appium环境 iPhone真机测试
- 从布朗运动到Black–Scholes
- 分组加密中的四种模式(ECB、CBC、CFB、OFB)
- PRACH, preamble, RO 的关系与区别
- 即时通讯源码,包含安卓,iOS,H5,MacOS,PC,Java后端
- k8s主从自动切换mysql_Kubernetes一键部署Mycat+Mysql主从集群
- 概率图模型(6)马尔科夫随机场
- 恰当的活法――有感于《杜拉拉升职记》
- Verilog/@符号什么意思
- 日乒赛-马龙爆冷止步次轮 朱雨玲陈梦率先进8强
- 十一长假不能错过的几款开源 Linux 游戏