python爬虫入门 实战(一)---爬糗事百科
2017-07-28 22:25
615 查看
http://www.jianshu.com/p/3a5b22d3e673
从上图可以看到,所有的段子以瀑布流的形式放在一个
那我们先获取所有段子的整个div结点
xpath的语法可以参考w3shcool里的XPath 教程,或者其他资料。
然后我们继续看段子的内容结构,如下图:
我们可以发现每个段子的第一个子div就是包含作者(用户)名字和头像信息的div,有共同的特点class="author clearfix",然后具体的名字信息在该div下的子元素第二个a标签里的h2标签里。
了解了结构我们可以进行提取名字了。
修改后
发送请求获取html源码
# -*- coding:utf-8 -*- import urllib import urllib2 page=1 url='http://www.qiushibaike.com/hot/page/'+str(page) user_agent='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36' headers={'User-Agent':user_agent} request=urllib2.Request(url,headers=headers) response=urllib2.urlopen(request) str_html= response.read() response.close() print str_html
用xpath解析并找到目标结点
我们先尝试从简单的开始,把当前页面的所有段子的作者名字爬下来输出。首先先审查元素,看看页面的结构。从上图可以看到,所有的段子以瀑布流的形式放在一个
id="content-left"的div里面,段子有共同的特点
class="article block untagged mb15"
那我们先获取所有段子的整个div结点
tree=html.fromstring(str_html) nodes=tree.xpath('//div[@id="content-left"]/div[@class="article block untagged mb15"]')
xpath的语法可以参考w3shcool里的XPath 教程,或者其他资料。
然后我们继续看段子的内容结构,如下图:
我们可以发现每个段子的第一个子div就是包含作者(用户)名字和头像信息的div,有共同的特点class="author clearfix",然后具体的名字信息在该div下的子元素第二个a标签里的h2标签里。
了解了结构我们可以进行提取名字了。
tree=html.fromstring(str_html) nodes=tree.xpath('//div[@id="content-left"]/div[@class="article block untagged mb15"]')
for node in nodes:
res_author=node.xpath('div[@class="author clearfix"]/a[2]/h2')[0]
print res_author.text
修改后
# -*- coding:utf-8 -*- from lxml import html import urllib import urllib2 page=1 url='http://www.qiushibaike.com/hot/page/'+str(page) user_agent='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36' headers={'User-Agent':user_agent} request=urllib2.Request(url,headers=headers) response=urllib2.urlopen(request) str_html= response.read() response.close() tree=html.fromstring(str_html) res_author=tree.xpath('//div[@class="author clearfix"]/a[2]/h2') for author in res_author: print author.text
爬取所有段子的主要信息(作者,内容,点赞和评论数)
# -*- coding:utf-8 -*-
from lxml import html
import urllib
import urllib2
page=1
url='http://www.qiushibaike.com/hot/page/'+str(page)
user_agent='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36'
headers={'User-Agent':user_agent}
request=urllib2.Request(url,headers=headers)
response=urllib2.urlopen(request)
str_html= response.read()
response.close()
tree=html.fromstring(str_html) nodes=tree.xpath('//div[@id="content-left"]/div[@class="article block untagged mb15"]')
#循环对每个段子结点进行输出
for node in nodes:
#解析每个段子
res_author=node.xpath('div[@class="author clearfix"]/a[2]/h2')[0].text
content=node.xpath('a[@class="contentHerf"]/div[@class="content"]/span')[0].text
num_vote=node.xpath('div[@class="stats"]/span[@class="stats-vote"]/i')[0].text
num_comments=node.xpath('div[@class="stats"]/span[@class="stats-comments"]/a[@class="qiushi_comments"]/i')[0].text
#输出指定内容
print u"作者:"+res_author
print "---------------------------------------------------------"
print u"内容:"+content
print "---------------------------------------------------------"
print u"点赞:"+num_vote+u",评论:"+num_comments+"\n"
相关文章推荐
- python3 [入门基础实战] 爬虫入门之爬取糗事百科
- Python爬虫实战一之爬取糗事百科段子
- python3 [爬虫入门实战]爬取熊猫直播用户信息
- Python爬虫实战:爬糗事百科的段子
- python3 [入门基础实战] 爬虫入门之爬取豆瓣阅读中文电子书[热门排序]
- Python3网络爬虫快速入门实战解析
- python3 [入门基础实战] 爬虫入门之xpath的学习
- python3 [爬虫入门实战] 查看网站有多少个网页(站点)
- python3 [爬虫入门实战]爬虫之scrapy爬取中华人民共和国民政部
- python3 [入门基础实战] 爬虫入门之爬取豆瓣读书随笔页面
- python3 [爬虫入门实战] 爬虫之使用selenium 爬取百度招聘内容并存mongodb
- Python3网络爬虫快速入门实战解析
- 简单爬虫入门:Python 爬虫之糗事百科
- Python爬虫实战一之爬取糗事百科段子
- Python 爬虫实战 - 糗事百科段子
- Python爬虫实战-爬取糗事百科段子
- python3 [入门基础实战] 爬虫入门之刷博客浏览量
- python爬虫实战一之糗事百科
- python3 [爬虫入门实战]爬虫之scrapy安装与配置教程
- Python爬虫实战:糗事百科