15-糗事百科(python+xpath)
爬取糗事百科的段子:
1.用xpath分析首要爬去内容的表达式;
2.用发起请求,获得原码;
3.用xpath分析源码,提取有用信息;
4.由python格式转为json格式,写入文件
#_*_ coding: utf-8 _*_
'''
Created on 2018年7月17日
@author: sss
function: 爬取糗事百科里面的内容 ''' import requests
import json
from lxml import etree url = "https://www.qiushibaike.com/8hr/page/3/"
headers = {'User-Agent': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1 Trident/5.0;'}
html= requests.get(url, headers = headers).text
# print(html) #将返回的字符串格式,转为HTML DOM模式
text = etree.HTML(html) #获得包含每个糗事的链表
#返回所有糗事的节点位置,contains()模糊查询方法,第一个参数为要匹配的标签,第二个参数为标签的内容
node_list = text.xpath('//div[contains(@id, "qiushi_tag_")]') items = {}
for node in node_list:
#用户名
# username = node.xpath('./div/a/h2')[0].text
username = node.xpath('.//h2')[0].text
#图片连接
image = node.xpath('.//img/@src')#[0]
#取出标题下的内容
content = node.xpath('./a/div/span')[0].text
#点赞
zan = node.xpath('./div/span/i')[0].text
#评论
comment = node.xpath('./div/span/a/i')[0].text items = {
'username' : username,
'image' : image,
'content' : content,
'zan' : zan,
'comments' : comment
} #把python格式的转换为json格式,此时转换成了字符串,就可以写入糗事段子.txt文件中了
we=json.dumps(items, ensure_ascii=False)
print(we)
with open('qiushi.txt', 'a', encoding='utf-8') as f: #注意在这里转为utf-8格式
f.write((we + '\n'))

效果:

不
不以json格式存储:
#_*_ coding: utf-8 _*_
'''
Created on 2018年7月17日
@author: sss
function: 爬取糗事百科里面的内容 ''' import requests
import json
from lxml import etree url = "https://www.qiushibaike.com/8hr/page/3/"
headers = {'User-Agent': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1 Trident/5.0;'}
html= requests.get(url, headers = headers).text
# print(html) #将返回的字符串格式,转为HTML DOM模式
text = etree.HTML(html) #获得包含每个糗事的链表
#返回所有糗事的节点位置,contains()模糊查询方法,第一个参数为要匹配的标签,第二个参数为标签的内容
node_list = text.xpath('//div[contains(@id, "qiushi_tag_")]') items = {}
for node in node_list:
#用户名
# username = node.xpath('./div/a/h2')[0].text
username = node.xpath('.//h2')[0].text.replace('\n','') #用replace去掉\n
#图片连接
image = node.xpath('.//img/@src')#[0]
#取出标题下的内容
content = node.xpath('./a/div/span')[0].text.replace('\n','')
#点赞
zan = node.xpath('./div/span/i')[0].text
#评论
comment = node.xpath('./div/span/a/i')[0].text items = {
'username' : username,
'image' : image,
'content' : content,
'zan' : zan,
'comments' : comment
} #把python格式的转换为json格式,此时转换成了字符串,就可以写入糗事段子.txt文件中了
# we=json.dumps(items, ensure_ascii=False)
# print(we)
# with open('qiushi.json', 'a', encoding='utf-8') as f: #注意在这里转为utf-8格式
# f.write((we + '\n'))
with open('qiushi_wenben.txt', 'a', encoding = "utf-8") as f:
f.write('用户:' + username + '\n')
f.write('图片链接:https:' + image[0] + '\n')
f.write('内容:' + content + '\n')
f.write('赞:' + zan + '\n')
f.write('评论:' + comment + '\n\n')
效果:

15-糗事百科(python+xpath)的更多相关文章
- 糗事百科python爬虫
# -*- coding: utf-8 -*- #coding=utf-8 import urllib import urllib2 import re import thread import ti ...
- Python爬虫(十八)_多线程糗事百科案例
多线程糗事百科案例 案例要求参考上一个糗事百科单进程案例:http://www.cnblogs.com/miqi1992/p/8081929.html Queue(队列对象) Queue是python ...
- Python爬虫实战一之爬取糗事百科段子
大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...
- python 多线程糗事百科案例
案例要求参考上一个糗事百科单进程案例 Queue(队列对象) Queue是python中的标准库,可以直接import Queue引用;队列是线程间最常用的交换数据的形式 python下多线程的思考 ...
- python scrapy实战糗事百科保存到json文件里
编写qsbk_spider.py爬虫文件 # -*- coding: utf-8 -*- import scrapy from qsbk.items import QsbkItem from scra ...
- python爬虫30 | scrapy后续,把「糗事百科」的段子爬下来然后存到数据库中
上回我们说到 python爬虫29 | 使用scrapy爬取糗事百科的例子,告诉你它有多厉害! WOW!! scrapy awesome!! 怎么会有这么牛逼的框架 wow!! awesome!! 用 ...
- python爬虫29 | 使用scrapy爬取糗事百科的例子,告诉你它有多厉害!
是时候给你说说 爬虫框架了 使用框架来爬取数据 会节省我们更多时间 很快就能抓取到我们想要抓取的内容 框架集合了许多操作 比如请求,数据解析,存储等等 都可以由框架完成 有些小伙伴就要问了 你他妈的 ...
- Xpath--使用Xpath爬取糗事百科成人版图片
#!usr/bin/env python#-*- coding:utf-8 _*-"""@author:Hurrican@file: 爬取糗事百科.py@time: 20 ...
- Python爬虫批量下载糗事百科段子,怀念的天王盖地虎,小鸡炖蘑菇...
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- 爬取糗事百科热门段子的数据并保存到本地,xpath的使用
和之前的爬虫类博客的爬取思路基本一致: 构造url_list,因为糗事百科的热门栏目默认是13页,所以这个就简单了 遍历发送请求获取响应 提取数据,这里用的是xpath提取,用的是Python的第三方 ...
随机推荐
- 设置Maven的Web工程启动名称
java application的web工程名称就是工程名称:但是maven则不同,他的默认的website名称是在maven的pom文件里面的artifactId节点配置的值:例如: <gro ...
- CentOS配置网易163 yum源
使用说明 首先备份/etc/yum.repos.d/CentOS-Base.repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/Cen ...
- 1.JMeter===添加响应断言
断言即Lr中的检查点,我们在进行测试时,需要对每次请求测试的返回做检验 1.以百度做案例,添加线程组==添加HTTP请求==添加查看结果树 2.在HTTP请求下添加响应断言 注:模式匹配规则,比较常用 ...
- Spring AOP表达式报错:Pointcut is not well-formed: expecting 'name pattern' at character position
问题现象: java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test ...
- Linux c- libevent
libevent是一个事件触发的网络库,适用于windows.linux.bsd等多种平台,内部使用select.epoll.kqueue等系统调用管理事件机制.著名分布式缓存软件memcached也 ...
- STL 练习
makefile ------------------------------------- %.o : %.cpp g++ -g -c $< -o $@ all: t t2 rmXX % : ...
- 关于FPGA电源精度要求
FPGA对DC-DC精度的要求不断提升 FPGA厂商不断采用更先进的工艺来降低器件功耗,提高性能,同时FPGA对供电电源的精度要求也越加苛刻,电压必须维持在非常严格的容限内,如果供电电压范围超出了规范 ...
- postman md5加密例子
引用方法 {{md5}} 参考:https://www.jianshu.com/p/5a49d1deaf69 实例:
- socket编程之select()
int select(int maxfdp,fd_set *readfds,fd_set *writefds,fd_set *errorfds,struct timeval *timeout); 参数 ...
- Centos如何设置IP地址,LINUX怎么修改IP地址
对于很多刚刚接触linux的朋友来说,如何设置linux系统的IP地址,作为第一步,下面小编以centos系统为例,给大家演示如何给centos设置IP地址,如何修改linux 系统IP地址? 步骤阅 ...