首页 / 爬虫 / 爬虫小程序之爬取百度贴吧图片
爬虫小程序之爬取百度贴吧图片
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了爬虫小程序之爬取百度贴吧图片,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2055字,纯文字阅读大概需要3分钟。
内容图文
![爬虫小程序之爬取百度贴吧图片](/upload/InfoBanner/zyjiaocheng/790/4defc06c8e3e41e5a00cb35522033b36.jpg)
利用Python第三方库请求库requests和解析库lxml等工具爬取百度贴吧任意贴吧名里的所有图片:
要求如下:
1、.编程范式------面向对象
2、采取简单的反反爬措施:如请求时间不宜过于频繁、请求头中的User-Agent要隐藏爬取工具且随机随机生成User-Agent规避反爬
3、只爬取吧主发布的图片,其他图片禁止爬取
代码如下:
import requests from lxml import etree import os import time from fake_useragent import UserAgent import warnings import random warnings.filterwarnings('ignore') class BaiduSpider(object): def __init__(self, keyword, page_number): self.url = 'http://tieba.baidu.com/' self.useragent = UserAgent() self.headers = {'User-Agent': self.useragent.random} self.keyword = keyword self.page_number = page_number # 获取帖子链接 def get_tlink(self, data): res = requests.get(self.url, headers=self.headers, params=data) res.encoding = 'utf-8' html = res.text html = html.replace(r"<!--", '').replace(r"-->", '') # print(html) parse_html = etree.HTML(html) t_list = parse_html.xpath( '//ul[@id="thread_list"]/li[@class=" j_thread_list clearfix"]/div//a/@href') # print(t_list) for t in t_list: # 拼接每个帖子的链接 t_link = 'http://tieba.baidu.com' + t # 向帖子链接发请求,获取图片链接,向图片链接发请求,保存图片到本地 # print(t_link) self.get_ilink(t_link) # 提取图片链接 def get_ilink(self, t_link): res = requests.get(t_link, headers=self.headers) res.encoding = 'utf-8' html = res.text parse_html = etree.HTML(html) i_list = parse_html.xpath( '//div[@class="d_post_content_main d_post_content_firstfloor"]//div[@class="d_post_content j_d_post_content clearfix"]/img[@class="BDE_Image"]/@src') print(i_list) for i in i_list: html = requests.get(i, heasers=self.headers).content self.write_image(html, i) # 保存图片 def write_image(self, html, i): filename = './' + self.keyword + '/' + i[-10:] with open(filename, 'wb') as f: f.write(html) def main(self): if os.path.exists(self.keyword): os.remove(self.keyword) for i in range(1, self.page_number + 1): data = { 'kw': self.keyword, 'pn': str((i - 1) * 50) } self.get_tlink(data) print('第%d页下载完毕' % i) time.sleep(random.randint(1, 10)) if __name__ == "__main__": spider = BaiduSpider('高考吧', 1) spider.main()
内容总结
以上是互联网集市为您收集整理的爬虫小程序之爬取百度贴吧图片全部内容,希望文章能够帮你解决爬虫小程序之爬取百度贴吧图片所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。