学习总结:
1.经试验,无需定义请求头headers也能爬取到数据
2.网站编码使用utf-8,试验时要了解清楚网站编码,以免数据乱码,返回数据可以使用response.encoding='网站编码’指定编码类型
3.图片数据的保存需使用二进制编码保存:response.content,使用python with open语句即可保存图片

# -*- coding=utf-8 -*-
import requests
from lxml import etreeclass CrawlTieba:def __init__(self):# self.header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'}self.info_list = []self.info_dict = {}# 构造请求url,返回请求url列表def get_url(self,page):default_url = "https://tieba.baidu.com/f?kw=猫&ie=utf-8&pn={}"url_list = []for i in range(1,page+1):url = default_url.format(i*50)  #每个页面50个标题url_list.append(url)return url_list# 处理请求,返回请求结果def request_url(self,url):response = requests.get(url=url)return response# 处理返回的请求为HTML对象,可使用xpathdef handle_html(self, html):html = etree.HTML(html)return html# 使用xpath解析请求结果,提取所需的数据,返回数据列表def parse_html(self,html):div_list = html.xpath('//ul[@id="thread_list"]/li//div[contains(@class,"threadlist_title")]/a')info_list = []for div in div_list:info_dict = {}info_dict['title'] = div.xpath('./@title')[0]info_dict['detail_url'] = 'https://tieba.baidu.com'+div.xpath('./@href')[0]info_list.append(info_dict)return info_list# 爬取详情页内图片url,返回图片url列表def crawl_img_url(self,html_detail_page):img_url_list= html_detail_page.xpath('//img[@class="BDE_Image"]/@src')return img_url_list# 传入图片url,爬取图片,返回二进制数据def crawl_img(self,img_url):img_response = self.request_url(img_url)return img_response.content# 主函数入口def run(self, page):url_list = self.get_url(page)for url in url_list:response = self.request_url(url)html = self.handle_html(response.text)info_lsit = self.parse_html(html)   #返回首页信息列表,每个title,以及详情页urlself.info_list = info_lsit# 进入详情页,处理详情页数据a = 1for i in range(len(self.info_list)):detail_url = self.info_list[i]['detail_url']response_detail = self.request_url(detail_url)html_detail_page = self.handle_html(response_detail.text)img_url_list = self.crawl_img_url(html_detail_page)    #返回详情页图片列表self.info_list[i]['img_url_list'] = img_url_listself.info_list.append(self.info_list[i]['img_url_list'])print('done:{}'.format(a))a += 1# 下载图片# for img_url in img_url_list:#     img_info = self.crawl_img(img_url)#     with open(img_url.split('/')[-1],'wb') as f:#         f.write(img_info)#         f.close()print(self.info_list)if __name__ == '__main__':crawl_tieba = CrawlTieba()crawl_tieba.run(1)  # 输入爬取的页面数1

爬虫基础:爬取百度贴吧-猫吧标题,详情页url,详情页图片url,下载图片相关推荐

  1. python爬虫之爬取百度网盘

    爬虫之爬取百度网盘(python) #coding: utf8 """ author:haoning create time: 2015-8-15 "" ...

  2. 爬取百度贴吧的标题,发帖人,发帖时间

    爬取百度贴吧的标题,发帖人,发帖时间 import re import requestsdef get(url):headers = {'User-Agent': 'Mozilla/5.0 (Wind ...

  3. python爬虫爬取百度图片总结_爬虫篇| 爬取百度图片(一)

    什么是爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模 ...

  4. python爬去百度图片_爬虫篇| 爬取百度图片(一)

    什么是爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模 ...

  5. 二、入门爬虫,爬取百度图片

    什么是爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模 ...

  6. 【爬虫】爬取百度贴吧数据

    在这里我们写一个简单的小爬虫程序,爬取百度贴吧前几页的数据. import requests import sysclass Tieba(object): def __init__(self, nam ...

  7. python爬百度新闻_13、web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息...

    crapy爬取百度新闻,爬取Ajax动态生成的信息,抓取百度新闻首页的新闻rul地址 有多网站,当你浏览器访问时看到的信息,在html源文件里却找不到,由得信息还是滚动条滚动到对应的位置后才显示信息, ...

  8. 【爬虫】爬取百度搜索结果页面

    今日看了一下爬虫,写了一个爬取百度搜索页面的小程序.可以在代码中改动搜索词,代码如下: #coding=utf-8 #python version:2.7 #author:sharpdeepimpor ...

  9. 利用python的爬虫技术爬取百度贴吧的帖子

    在爬取糗事百科的段子后,我又在知乎上找了一个爬取百度贴吧帖子的实例,为了巩固提升已掌握的爬虫知识,于是我打算自己也做一个. 实现目标:1,爬取楼主所发的帖子 2,显示所爬去的楼层以及帖子题目 3,将爬 ...

最新文章

  1. 重磅 | 谷歌Waymo最新发布可完全脱离人类操控的自动驾驶汽车
  2. (深入理解)matplotlib的交互模式(block,interactive,ion,ioff,draw,show,plot等的区别)
  3. 【机器学习】改善LBP特征提高SVM的可分性的经验总结(一)
  4. 【Python】双十一,就用turtle画个单身狗送给自己
  5. VTK:PolyData之HighlightBadCells
  6. OpenCV进口重建Import Reconstruction
  7. Lecture 18 Shortest Paths II
  8. 边缘检测后去除噪点_修图前vs修图后,原来那些网红“照骗”都是这样修出来的!...
  9. 基于docker - 单机版FastDFS搭建
  10. 问题 H: 简单的打折计算 山东科技大学OJ C语言
  11. 多密钥ssh-key生成与管理
  12. POJ NOI MATH-7653 地球人口承载力估计
  13. [转载] python处理数据列_Python中基于跨列的数据处理
  14. 编译android源码的make命令解析
  15. [j2me]二级菜单界面演练[三][0215update]
  16. Kotlin实战【三】表示与选择
  17. 超大文本文件怎么打开(使用Hex Editor)
  18. Spring boot整合人大金仓(KingBaseEs)国产数据库
  19. 基于opencv的重叠图像的凹点分割(C++)
  20. 华为云-计算云服务介绍

热门文章

  1. defy手机突然搜索不到wifi信号的问题
  2. 数据分析--01股票分析
  3. 黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第十一章 攻击性取证
  4. HTML,你们都怎么读?
  5. 考导游证需要什么条件?报考导游领队需要什么条件?
  6. 浅析 JavaScript 沙箱
  7. 汇编课程设计——时钟
  8. web前端月刊-39期(202107)
  9. 30天自制操作系统Day4
  10. 蓝桥杯 Java n皇后受伤的皇后2n皇后 详解