程序中用到的一些零碎知识点:

一、列表推导式:帮助我们快速生成一堆数据的列表

1、format:字符串格式化的一种方式

>>> ["10月{}日".format(i) for i in range(1,10)]
['10月1日', '10月2日', '10月3日', '10月4日', '10月5日', '10月6日', '10月7日', '10月8日', '10月9日']

二、字典推导式:帮助我们快速生成一堆数据的字典

>>> {i+10:i for  i in range(10)}
{10: 0, 11: 1, 12: 2, 13: 3, 14: 4, 15: 5, 16: 6, 17: 7, 18: 8, 19: 9}

>>> {"a{}".format(i):10 for i in range(10)}
{'a0': 10, 'a1': 10, 'a2': 10, 'a3': 10, 'a4': 10, 'a5': 10, 'a6': 10, 'a7': 10, 'a8': 10, 'a9': 10}

三、三元运算符

a=10 if 3>4 else 20     #a=20

a=10 if 3<4 else 20     #a=10

代码如下:

import  requestsfrom  lxml import  etreeimport jsonclass Qiushibaike():def __init__(self):self.url = "https://www.qiushibaike.com/8hr/page/{}/"self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"}def parse_url(self,url):print("now:",url)response =requests.get(url,headers = self.headers)return response.content.decode()def get_content_list(self,html_str):html = etree.HTML(html_str)div_list = html.xpath("//div[@id='content-left']/div")content_list=[]for div in div_list:item={}item["username"]=div.xpath(".//div[@class='author clearfix']//h2/text()")[0].strip() if len(div.xpath(".//div[@class='author clearfix']//h2/text()"))>0 else Noneitem["age"]=div.xpath(".//div[@class='author clearfix']//div/text()")item["content"]=div.xpath(".//div[@class='content']/span/text()")item["stats_vote"]=div.xpath(".//span[@class='stats-vote']/i/text()")item["stats_vote"]=item["stats_vote"][0] if len(item["stats_vote"])>0 else Noneitem["stats_commments"]=div.xpath(".//span[@class='stats-comments']//i/text()")item["stats_commments"]=item["stats_commments"][0] if len(item["stats_commments"])>0 else Noneitem["img"]=div.xpath(".//div[@class='thumb']//img/@src")item["img"]="https:"+item["img"][0] if len(item["img"])>0 else Nonecontent_list.append(item)return content_listdef save_content_list(self,content_list):with open("糗事百科.txt","a",encoding="utf-8") as f:for content in content_list:f.write(json.dumps(content,ensure_ascii=False,indent=2))f.write("\n")print("保存成功")def run(self):#1.根据url地址的规律构造url_listurl_list = [self.url.format(i) for i in range(1,14)]#2.发送请求,获取响应for url in url_list:html_str = self.parse_url(url)#3.提取数据content_list = self.get_content_list(html_str)#4.保存self.save_content_list(content_list)if __name__ == '__main__':qiushi = Qiushibaike()qiushi.run()

【Python】数据提取xpath和lxml模块(糗事百科的爬虫)相关推荐

  1. 【Python】数据提取xpath和lxml模块(豆瓣电影排行榜的爬虫)

    xpath xpath:一门从html中提取数据的语言 xpath语法 1.选择节点(标签)    /html/head/meta :能够选中html下的head下的所有的meta标签 2.// :能 ...

  2. python爬虫之XPATH(爬取糗事百科、扇贝单词、网易云)

    1.XML简介 或许有人会说,我正则用的不好,处理 HTML 文档很累,有没有其他的方法?有!那就是XPath,我们可以: (1)先将 HTML 文件 转换成 XML 文档, (2)然后用 XPath ...

  3. python笔记之利用BeautifulSoup爬取糗事百科首页段子

    1.到糗事百科查看网页源代码找到规律,发现内容都在class_="content"的div标签内 2.直接上代码: from bs4 import BeautifulSoup #调 ...

  4. 编写爬取糗事百科信息爬虫代码学习笔记

    前言 学习python3已经有一段时间了,本着趁自己还记得学过什么的原则,特意把这段时间所学所悟记录下来.就从利用python3编写糗事百科爬虫开始写起,在此感谢静觅博主的python爬虫学习系列教程 ...

  5. python实现数据爬取——糗事百科爬虫项目

    python实现数据爬取--糗事百科爬虫项目 # urllib.request 请求模块 import urllib.request # re 模块使 Python 语言拥有全部的正则表达式功能. i ...

  6. 正则表达式re模式(python爬虫糗事百科热点段子)

    python编程快速上手(持续更新中-) python爬虫从入门到精通 文章目录 python编程快速上手(持续更新中-) python爬虫从入门到精通 非结构化数据与结构化数据提取 概述 非结构化的 ...

  7. Python爬虫 基于Beautiful Soup的糗事百科爬虫

    python爬虫 ---- 糗事百科爬虫 首先进入糗事百科官网首页 -> 糗事百科 本次爬虫的目标是翻页爬取糗事百科的信息,包括 标题, 链接, 作者名, 好笑数&评论数 之后右键检查, ...

  8. Python爬虫实战之爬取糗事百科段子

    Python爬虫实战之爬取糗事百科段子 完整代码地址:Python爬虫实战之爬取糗事百科段子 程序代码详解: Spider1-qiushibaike.py:爬取糗事百科的8小时最新页的段子.包含的信息 ...

  9. Python数据提取-lxml模块

    更多python教程请到友情连接: 菜鸟教程https://www.piaodoo.com 初中毕业读什么技校 http://cntkd.net 茂名一技http://www.enechn.com p ...

最新文章

  1. 变更AD计算机名称和IP地址
  2. 深圳惠程澄清与奇虎360公司重组传闻
  3. 无监督和有监督的区别_无监督元学习(Unsupervised Meta-Learning)
  4. python numpy逆_numpy.linalg.inv返回奇异矩阵的逆函数 - python
  5. 正则表达式发明者_浅谈正则表达式背后的基本原理
  6. RabbitMQ单机瞎玩(2)
  7. python爬虫天气实例scrapy_2017.08.04 Python网络爬虫之Scrapy爬虫实战二 天气预报...
  8. 1亿中国人已被AI批改过作业
  9. python不同颜色的代码_python日志通过不同的等级打印不同的颜色(示例代码)
  10. archlinux安装mysql_在Arch Linux中安装MySQL
  11. Win11、Linux 双系统安装方法
  12. Windows系统内置彩蛋
  13. 如何做数据仓库的有效需求分析
  14. Android拦截陌生号码,安卓手机应该如何设置拦截陌生号码
  15. 51cto 检测ip地址冲突_IP地址冲突解决办法
  16. 知识体系结构---备份
  17. 传奇 定时任务(泡点、时间触发、任务活动等)
  18. Python 基于modbus tcp 协议 实现与plc通信
  19. android 自定义图片裁剪,Android图片裁剪工具封装
  20. 核心期刊《中国兽医学报》

热门文章

  1. Python培训完可以找什么工作
  2. HTML5培训好不好
  3. 带头结点的线性表的链式实现
  4. 阿里云移动数据分析服务使用教程
  5. 怎样做才是最优雅方式切换 web 项目数据源 ?
  6. 数据中心建设“优劣”在于这几个关键问题
  7. Linux 安装图形界面及远程连接
  8. ArduinoYun教程之通过网络为Arduino Yun编程
  9. Debian Linux下的Python学习——控制流
  10. zip/unzip 命令