开往未来的列车|Python爬虫快速入门,静态网页爬取( 五 )
for item in items:name = ''.join(item.text.split())link = item['href']print(name, link)1234这样结果就可以正常显示啦 。
四、爬取所有Top250图书可能你已经发现了 , 我们之前爬取的图书仅仅是第一页的 , 并不是所有的Top250图书 , 那么如何爬取所有的呢?
我们进入第二页后 , 可以看到网址变成了?start=25 , 相比原来多了个?start=25 。
我们再进入第一页 , 会发现网址变成了?start=0 。 之后 , 再进入最后一页 , 网址变成了?start=225 。
我想你应该已经找到了其中的规律 。
很显然 , "start="后面的数字总是以步长25进行递增 , 第一页此数字是0 , 第十页此数字是225 , 这让我们联想到了循环 。
我们先把之前爬取图书的代码封装成一个函数:
def spider(url):headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36'}re = requests.get(url, headers=headers)soup = BeautifulSoup(re.text, 'html.parser')items = soup.select('div.pl2 a')for item in items:name = item['title']link = item['href']print(name, link)1234567891011豆瓣图书Top250共有十页 , 我们根据之前找出来的规律 , 利用循环生成这十个网页地址:
for i in range(0, 250, 25):douban_book = '?start=%s' % str(i)12之后 , 将它们组装在一起 , 我们就可以爬取所有图书了:
import requestsfrom bs4 import BeautifulSoupdef spider(url):headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36'}re = requests.get(url, headers=headers)soup = BeautifulSoup(re.text, 'html.parser')items = soup.select('div.pl2 a')for item in items:name = item['title']link = item['href']print(name, link)for i in range(0, 250, 25):douban_book = '?start=%s' % str(i)spider(douban_book)1234567891011121314151617181920但考虑到输出结果太长 , 不方便在终端查看 , 我们可以将爬取到的结果写入文件:
import requestsfrom bs4 import BeautifulSoupdef spider(url, filename):headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36'}re = requests.get(url, headers=headers)soup = BeautifulSoup(re.text, 'html.parser')items = soup.select('div.pl2 a')with open(filename, 'a', encoding=re.encoding) as f:for item in items:line = item['title'] + " " + item['href'] + "\n"f.write(line)for i in range(0, 250, 25):douban_book = '?start=%s' % str(i)spider(douban_book, 'doubanTop250.txt')1234567891011121314151617181920效果:
五、防BAN策略爬虫在网页上爬取数据时如果不加任何限制会“高速”访问对方的服务器 , 如果访问太快容易导致被对方服务器封禁 , 因为正常人是不会在1秒内访问几十次甚至上百次网站的 , 这样就会导致我们在一段时间内无法访问这个网站 。 所以 , 如果你访问过于频繁 , 即使通过修改User-Agent伪装成浏览器 , 也还是会被识别出爬虫 , 并限制你的IP访问该网站 。
那么如何防止自己被封禁呢?这里介绍两种策略 , 一种是降低自己的爬取速度 , 另一种是IP代理 。
- 金屋房市|未来房价会降多少?可能会跌到刚需兜里有多少钱的地步!你信吗?
- 韦少|未来到底是谁的?韦少哈登太难了,8年过去了詹姆斯怎么还这么强
- 新民晚报|注意了!未来两个双休日3号线这个区段将暂停运营
- 中国新闻网|服贸会商机:“网课”会成为教育行业的未来吗?
- 探索未来|40+女人穿玄色显老?是你不会搭配!看50岁富冈佳子这么穿多美
- 第一财经|免税概念利好消息频出,机构看好板块未来强劲增长丨牛熊眼
- 落叶知秋|中芯国际将被美国拉黑,鸿蒙系统已有进展,未来科技方向在何方?
- 开往未来的列车|3亿人曾用过,最让人感到不舍的腾讯产品,如今终被停服
- 大众报业·海报新闻|该校此前已有3位校友获此殊荣,山东大学教授彭实戈获未来科学大奖
- 瑞银集团|瑞银钱于军:未来中国资本市场进一步开放 很多外资会摩拳擦掌
