python xpath介绍和新闻内容爬虫
2017-08-18 00:06
274 查看
二十、python xpath介绍和新闻内容爬虫
Xpath介绍
用xpath提取感兴趣的内容一个网页文档是一个半结构化的数据,其实html文档就是一个树形结构。根节点是html
用正则表达式也可以提取,但是不如xpath方便
1、路径表示法
//定位根节点
/text(): 提取文本的内容
/@attr:提取属性的内容
2、筛选条件
/div[@id]
/div[@id="content_id"]
/book[price>100] #按照节点的值
问题:先再windows中安装lxml
???
前提是先装好:pip
C:\Users\lyd>pip install lxml
Xpath使用
#获取新闻列表import requests
from lxml import etree
import datetime
#根据跟url获取该文档中的新闻列表的信息
def getNewsUrlList(baseUrl):
x = requests.get(baseUrl)
html = x.content.decode('gbk')
selector = etree.HTML(html)
contents = selector.xpath('//div[@id="content_right"]/div[@class="content_list"]/ul/li[div]')
for eachLink in contents:
url = eachLink.xpath('div/a/@href')[0]
title = eachLink.xpath('div/a/text()')[0]
ptime = eachLink.xpath('div[@class="dd_time"]/text()')[0]
yield(title, url, ptime)
#根据具体的新闻的url获取该新闻的内容
def getNewsContent(newsUrlList):
for title, url, ptime in newUrlList:
x = requests.get(url)
html = x.content.decode('gbk') #整个页面的编码为gbk2312
selector = etree.HTML(html)
constants = selector.xpath('//div[@class="left_zw"]/p/text()')
news = '\r\n'.join(constants) #在每一个p标签都回车换行。
\r\n: linux中的换行,就相当于wind中的\n
yield title, url, ptime, news
# 获取昨天的日期
def getYesterday(i):
today = datetime.date.today()
oneday = datetime.timedelta(days=i)
yesterday = today - oneday
return yesterday.strftime("%m%d")
if __name__ == "__main__":
urlTemplate = 'http://www.chinanews.com/scroll-news/mil/{0}/{1}{2}/news.shtml'
#http://www.chinanews.com/scroll-news/2017/0719/news.shtml
#http://www.chinanews.com/scroll-news/mil/2017/0717/news.shtml
testurl = urlTemplate.format('2017', '7', '20')
#print testurl
# newUrlList = getNewsUrlList(testurl)
# for title, url, ptime in newUrlList:
# print title, url, ptime
# newsConstant = getNewsContent(newUrlList)
# f = open('news.txt','w') #以写的方式打开一个文件
# w = lambda x: f.write((x+u'\r\n').encode('utf-8'))
# for title, url, ptime, news in newsConstant:
# w(u'~'*100)
# w(title)
# w(url)
# w(news)
# f.close()
#########################如下是作业:####################################
#爬去今天以前n多天的新闻数据
for i in range(0, 10):
yesterday = getYesterday(i)
urls = '%s%s%s' % ("http://www.chinanews.com/scroll-news/mil/2017/", yesterday, '/news.shtml')
newUrlList = getNewsUrlList(urls)
for title, url, ptime in newUrlList:
print title, url, ptime
# newsConstant = getNewsContent(newUrlList)
# f = open('news.txt','w') #以写的方式打开一个文件
# w = lambda x: f.write((x+u'\r\n').encode('utf-8'))
# for title, url, ptime, news in newsConstant:
# w(u'~'*100)
# w(title)
# w(url)
# w(news)
# f.close()
-----------------------------------------------------------------------------------------------------------------------
相关文章推荐
- Python爬虫爬取新浪新闻内容
- python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容
- 基于python Scrapy的爬虫——爬取某网站新闻内容
- Python爬虫:Selenium+ BeautifulSoup 爬取JS渲染的动态内容(雪球网新闻)
- python中的爬虫神器 XPath 介绍
- [Python爬虫] 在Windows下安装PhantomJS和CasperJS及入门介绍(上)
- python scrapy爬虫框架概念介绍(个人理解总结为一张图)
- python爬虫中get和post方法介绍以及cookie作用
- Python爬虫之requests介绍
- [python爬虫] Selenium常见元素定位方法和操作的学习介绍
- Python爬虫学习笔记(3)-XPath与多线程爬虫
- 【Python】爬虫爬取各大网站新闻(一)
- Python爬虫(入门+进阶)学习笔记 1-4 使用Xpath解析豆瓣短评
- Python爬虫小实践:爬取任意CSDN博客所有文章的文字内容(或可改写为保存其他的元素),间接增加博客访问量
- Python爬虫爬取百度百科内容实例
- python爬虫——获取新浪新闻前两页新闻信息
- python 爬虫(xpath解析网页,下载照片)
- js类似新闻图片轮换(带有文字介绍,其实可以放任何内容)
- 第三百三十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—Scrapy启动文件的配置—xpath表达式
- 【python学习】网络爬虫——爬百度贴吧帖子内容