爬取某贴吧

import requests
from  lxml import etree
import jsonclass Tieba(object):def __init__(self,tieba_name):self.tieba_name=tieba_name self.headers={"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"}def get_url_list(self):url = "https://tieba.baidu.com/f?kw="+self.tieba_name+"&ie=utf-8&pn={}&"#response=request.get(url,heards=heards)url_list=[]for i in range(100): #通过循环拼接100个urlurl_list.append(url.format(i*50))return url_list #返回100个url的urllistdef parse_url(self,url):'''一个发送请求,获取响应,同时etree处理html'''print("parsing url:",url)response = requests.get(url,headers=self.headers) #发送请求html = response.content.decode() #获取html字符串html = etree.HTML(html) #获取element 类型的htmlreturn htmldef get_title_href(self,url):'''获取一个页面的title和href'''html = self.parse_url(url)li_temp_list = html.xpath("//li[@class='tl_shadow']") #分组,按照li标签分组total_items = []for i in li_temp_list: #遍历分组href = "https:"+i.xpath("./a/@href")[0] if len(i.xpath("./a/@href"))>0 else Nonetext = i.xpath("./a/div[1]/span[1]/text()")text = text[0] if len(text)>0 else Noneitem = dict(  #放入字典href = href,text = text)total_items.append(item)return total_items #返回一个页面所有的itemdef get_img(self,url):'''获取一个帖子里面的所有图片'''html = self.parse_url(url) #返回elemet累心的html,具有xpath方法img_list = html.xpath('//div[@data-class="BDE_Image"]/@data-url')img_list = [i.split("src=")[-1] for i in img_list] #提取图片的urlimg_list = [requests.utils.unquote(i) for i in img_list]return img_listdef save_item(self,item):'''保存一个item'''with open("teibatupian.txt","a") as f:f.write(json.dumps(item,ensure_ascii=False,indent=2))f.write("\n")def run(self):#1、找到了url规律,url listurl_list = self.get_url_list()for url in url_list:#2、遍历urllist 发送请求,获得响应,etree处理html# 3、提取title,hreftotal_item = self.get_title_href(url)for item in total_item:href = item["href"]img_list = self.get_img(href) #获取到了帖子的图片列表item["img"] = img_list# 4、保存到本地print(item)self.save_item(item)if __name__ == "__main__":tieba = Tieba("图书")tieba.run()

爬取糗事百科的段子

import requests
from retrying import retry
from lxml import etreeclass Qiubai_spider():def __init__(self):self.url = "http://www.qiushibaike.com/8hr/page/{}/"self.headers = {"User-Agent":"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1 Trident/5.0;"}@retry(stop_max_attempt_number=5) #调用retry,当assert出错时候,重复请求5次def parse_url(self,url):response = requests.get(url,timeout=10,headers=self.headers) #请求urlassert response.status_code==200  #当响应码不是200时候,做断言报错处理print(url)return etree.HTML(response.text) #返回etree之后的htmldef parse_content(self,html):item_temp = html.xpath("//div[@class='article block untagged mb15']")print(len(item_temp))for item in item_temp:#获取用户头像地址avatar = item.xpath("./div[1]/a[1]/img/@src")[0] if len(item.xpath("./div[1]/a[1]/img/@src"))>0 else None#为头像地址添加前缀if avatar is not None and not avatar.startswith("http:"):avatar = "http:"+avatarprint(avatar)name = item.xpath("./div[1]/a[2]/h2/text()")[0] #获取用户名print(name)content = item.xpath("./a[@class='contentHerf']/div/span/text()")[0] #获取内容print(content)star_number = item.xpath("./div[@class='stats']/span[1]/i/text()")[0] #获取点赞数print(star_number)comment_number = item.xpath("./div[@class='stats']/span[2]/a/i/text()")[0] #获取评论数print(comment_number)print("*"*100)def run(self):'''函数的主要逻辑实现'''url = self.url.format(1) #获取到urlhtml = self.parse_url(url) #请求urlself.parse_content(html) #解析页面内容并把内容存入内容队列if __name__ == "__main__":qiubai = Qiubai_spider()qiubai.run(

使用XPath的爬虫相关推荐

  1. Python案例:使用XPath的爬虫

    案例:使用XPath的爬虫 现在我们用XPath来做一个简单的爬虫,我们尝试爬取某个贴吧里的所有帖子,并且将该这个帖子里每个楼层发布的图片下载到本地. # tieba_xpath.py#!/usr/b ...

  2. Python爬虫(十三)_案例:使用XPath的爬虫

    本篇是使用XPath的案例,更多内容请参考:Python学习指南 案例:使用XPath的爬虫 现在我们用XPath来做一个简单的爬虫,我们尝试爬取某个贴吧里的所有帖子且将该帖子里每个楼层发布的图片下载 ...

  3. python爬虫xpath教程_使用 Xpath 进行爬虫开发

    使用 Xpath 进行爬虫开发 Xpath( XML Path Language, XML路径语言),是一种在 XML 数据中查找信息的语言,现在,我们也可以使用它在 HTML 中查找需要的信息. 既 ...

  4. python如何调用xpath_Python案例:使用XPath的爬虫

    案例:使用XPath的爬虫 现在我们用XPath来做一个简单的爬虫,我们尝试爬取某个贴吧里的所有帖子,并且将该这个帖子里每个楼层发布的图片下载到本地. # tieba_xpath.py #!/usr/ ...

  5. Xpath语法-爬虫(一)

    前言 这一章节主要讲解Xpath的基础语法,学习如何通过Xpath获取网页中我们想要的内容;为我们的后面学习Java网络爬虫基础准备工作. 备注:此章节为基础核心章节,未来会在网络爬虫的数据解析环节经 ...

  6. Python爬虫(十一)_案例:使用XPath的爬虫

    现在我们用XPath来做一个简单的爬虫,我们尝试爬取某个贴吧里的所有帖子且将该帖子里每个楼层发布的图片下载到本地. #-*- coding:utf-8 -*- #tieba_xpath.py" ...

  7. xpath contains_Python 爬虫进阶: Scrapy Shell 和 Xpath 学习心得

    说来好笑,刚学习爬虫的时候为了调试代码,是将网页下载到本地,再用beautifulsoup载入本地网页文件进行分析,以保证选择器编写正确. Scrapy内置的调试器Scrapy Shell正好作此用途 ...

  8. xpath解析爬虫爬取豆瓣图书Top250的数据

    这是在学习阶段写的爬虫,爬取的是豆瓣图书Top250榜的名称,作者,评分等数据 第一次写文章,如果有什么问题,欢迎各位大佬进行指正,谢谢来踩. 1.首先需要明确自己想要爬取的内容,并在网页中查看数据是 ...

  9. Python常用插件类举,lxml+Xpath实现爬虫,使用Xpath爬取链家二手房源信息

    目录 一.XPath 二.XPath 常用规则 三.在谷歌浏览器安装XPath插件 四.Python爬虫常用插件 五.使用Xpath解析 六.Xpath匹配示例 1.查看所有的标签(如p.a.li标签 ...

最新文章

  1. phantomjs使用说明
  2. Gtk-WARNING**:无法在模块路径中找到主题引擎:“pixmap”的解决
  3. mysql和sql互导_Mysql和SqlServer互相转换
  4. 袋鼠云大数据面试题回忆
  5. java编程计算加减乘除_Java程序完成加减乘除四则运算
  6. Akka相关术语 译《fifteen》
  7. /proc/meminfo 文件
  8. pythonmt4通讯swot矩阵_最经典的市场部SWOT分析矩阵
  9. webpack4打包js
  10. TensorFlow 2.9的零零碎碎(二)-读取MNIST数据集
  11. 使用STM32CubeProgrammer烧录STM32芯片
  12. resource.h
  13. C语言计算程序运行时间简单实例
  14. 局部非饱和性的含义_范里安-微观经济学现代观点讲义(new)
  15. 计算机网络面试《葵花宝典》
  16. 创业项目融资PPT模板
  17. VUE源码解析-响应式原理的实现
  18. 微信公众号三方平台开发【获取授权方的授权信息以及基本信息】
  19. java出现404的原因是_关于出现404错误的原因
  20. 一个萝卜一个坑:短网址开发运维经验总结分享

热门文章

  1. 51单片机LCD1602液晶显示屏
  2. php 获取农历,PHP通过新历获取农历日期的方法
  3. C语言编程 体型预测
  4. Java 模拟斗地主发牌
  5. SpringCloud微服务面试题
  6. 年化17.5%,十年8倍的“双低”转债策略:从零实现量化回测系统之三
  7. Unity Shader - Heightmap 高度贴图
  8. 移动端多页面APP(MPA)开发体验
  9. 项目选题-口罩识别检测系统
  10. 《Pro Oracle SQL》Chapter 2--2.4 Identical Statements