安装包:
  requests,lxml
request包用于进行数据抓取,
lxml用来进行数据解析
对于对网页内容的处理,由于html本身并非如数据库一样为结构化的查询所见即所得,所以需要对网页的内容进行分析然后进行内容提取,lxml就是用来完成此项工作
在requests中最用的方法为get()方法,通常情况下可以将url做为参数传入进去,对于一些功能比较完善的网站如果存在反爬取数据的功能是则需要设置headers参数内容,内容为一字典类型
可以在浏览器中查看User-Agent字段的内容,设置后requests将在抓取数据时同时提交所设置的头信息以进行浏览器的访问模拟
同时在抓取数据时要注意网站所使用的字符编码,当编码不一至时需要对字符编码进行相应的转换
具体见以下代码注释
#!/usr/bin/python
# encoding: utf-8
import requests
from lxml import etree url='http://www.chinanews.com/scroll-news/mil/2017/0110/news.shtml' def getNewUrlList():
global url
header ={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36'}    构造浏览器头信息
response=requests.get(url,headers=header)   获取数据
html=response.content.decode("gbk")    解码
selector=etree.HTML(html)
contents = selector.xpath('//div[@id="content_right"]/div[@class="content_list"]/ul/li[div]')    使用xpath语法解析获取数据//表示从根开始查找@后跟相应的html属性
for eachlink in contents:
url = eachlink.xpath('div/a/@href')[0] if str(eachlink.xpath('div/a/@href')[0]).__contains__("http") else "http://www.chinanews.com"+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) def getNewContent(urlList):
for title,url,ptime in urlList:
response=requests.get(url,headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36'})
html=response.content.decode("gbk")
selector=etree.HTML(html)
title=selector.xpath("//div[@id='cont_1_1_2']/h1/text()")[0]
source=selector.xpath("//div[@id='cont_1_1_2']/div[@class='left-time']/div[@class='left-t']/text()")[0]
content=selector.xpath("//div[@id='cont_1_1_2']/div[@class='left_zw']/p/text()") i=0
resultContent=''
for item in range(0,content.__len__()):
resultContent+=content[i]
i+=1
yield (title,source,resultContent) if __name__=="__main__":
urlList= getNewUrlList()
result= getNewContent(urlList)
for title,source,content in result:
print u"标题:%s"%title
print u"来源:%s"%source
print u"正文:%s"%content

python-requests 简单实现数据抓取的更多相关文章

  1. 网页数据抓取工具,webscraper 最简单的数据抓取教程,人人都用得上

    Web Scraper 是一款免费的,适用于普通用户(不需要专业 IT 技术的)的爬虫工具,可以方便的通过鼠标和简单配置获取你所想要数据.例如知乎回答列表.微博热门.微博评论.淘宝.天猫.亚马逊等电商 ...

  2. Python实现简单的网页抓取

    现在开源的网页抓取程序有很多,各种语言应有尽有. 这里分享一下Python从零开始的网页抓取过程 第一步:安装Python 点击下载适合的版本https://www.python.org/ 我这里选择 ...

  3. Python 东方财富网-股市行情数据抓取

    东方财富网 股市行情数据抓取: http://quote.eastmoney.com/center/gridlist.html#hs_a_board 请求数据未入库处理,其中数据只存入数据文本,未做存 ...

  4. [Python学习] 简单网络爬虫抓取博客文章及思想介绍

            前面一直强调Python运用到网络爬虫方面很有效,这篇文章也是结合学习的Python视频知识及我研究生数据挖掘方向的知识.从而简介下Python是怎样爬去网络数据的,文章知识很easy ...

  5. 使用Python编写简单网络爬虫抓取视频下载资源

    我第一次接触爬虫这东西是在今年的5月份,当时写了一个博客搜索引擎.所用到的爬虫也挺智能的,起码比电影来了这个站用到的爬虫水平高多了! 回到用Python写爬虫的话题. Python一直是我主要使用的脚 ...

  6. 【Python入门只需20分钟】从安装到数据抓取、存储原来这么简单

    基于大众对Python的大肆吹捧和赞赏,作为一名Java从业人员,我本着批判与好奇的心态买了本python方面的书<毫无障碍学Python>.仅仅看了书前面一小部分的我......决定做一 ...

  7. [原创.数据可视化系列之十二]使用 nodejs通过async await建立同步数据抓取

    做数据分析和可视化工作,最重要的一点就是数据抓取工作,之前使用Java和python都做过简单的数据抓取,感觉用的很不顺手. 后来用nodejs发现非常不错,通过js就可以进行数据抓取工作,类似jqu ...

  8. Python数据抓取_BeautifulSoup模块的使用

    在数据抓取的过程中,我们往往都需要对数据进行处理 本篇文章我们主要来介绍python的HTML和XML的分析库 BeautifulSoup 的官方文档网站如下 https://www.crummy.c ...

  9. Python数据抓取(1) —数据处理前的准备

    (一)数据抓取概要 为什么要学会抓取网络数据? 对公司或对自己有价值的数据,80%都不在本地的数据库,它们都散落在广大的网络数据,这些数据通常都伴随着网页的形式呈现,这样的数据我们称为非结构化数据 如 ...

随机推荐

  1. vi—终端中的编辑器

    *:first-child { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom: 0 !impor ...

  2. winform列标题高度无法改变

    datagridview行为里把ColumnHeadersHeightSizeMode属性设置为EnableResizing 但好像会导致横向滚动条从底部跑到了中间,还不知道这个BUG的原因,将Col ...

  3. Elasticsearch插件head的安装(有坑)

    http://blog.csdn.net/u012332735/article/details/56283932 Elasticsearch出了5.2.1版本之后,就去试试它的新版本的使用,为了以后的 ...

  4. Kafka,Mq,Redis作为消息队列有何差异?

    Kafka作为新一代的消息系统,mq是比较成熟消息系统,而redis也可以发布订阅,那么这三者有何异同? RabbitMQ 是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,X ...

  5. 八大排序算法的python实现(一)直接插入排序

    刚参考网上的以及书上的资料把这八大算法又复习了一遍,感悟就是:有些算法原理真的很简单,一看就懂,但实现起来总是有这样那样的问题. 闲言少叙,先贴代码,之后再以自己的理解,以及自己在理解与实现的过程中遇 ...

  6. 如何用python批量翻译文本?

    首先,看一下百度翻译的官方api文档. http://api.fanyi.baidu.com/api/trans/product/apidoc # coding=utf-8 #authority:bi ...

  7. MongDB集群部署

    http://blog.csdn.net/luonanqin/article/details/8497860 参数解释: dbpath:数据存放目录 logpath:日志存放路径 pidfilepat ...

  8. 【洛谷2113】看球泡妹子 DP背包

    看球泡妹子 题目背景 2014年巴西世界杯开幕了,现在满城皆是世界杯,商家们利用它大赚一笔,小明和小红也借此机会增进感情. 题目描述 本届世界杯共有\(N\)支球队,\(M\)场比赛.男球迷小明喜欢看 ...

  9. 富文本的一般处理方式,document.getElementById('富文本的ID').contentWindow.document.body.innerHTML = '%s'" %(content)

    如果套不出来,去问前端开发帮忙吧 哈哈

  10. 多线程 NSThread 的使用

    NSThread简介 使用NSThread 实现多线程,需要手动管理线程的生命周期, 一.线程的创建 //1.实例方法创建,,需要手动启动线程 NSThread *thread = [[NSThrea ...