python爬虫(抓取百度新闻列表)
一、python请求要抓取的url页面
要抓取的url http://news.baidu.com/ ,先python模拟请求该url
#!/usr/bin/python
# -*- coding:utf-8 -*-import httplibclass NewsBaidu(object):def __init__(self):super(NewsBaidu,self).__init__()def request(self):conn = httplib.HTTPConnection('news.baidu.com') #请求的hostrequest_url = '/' #请求的网页路径body = '' #请求的参数headers = {} #请求所带的头信息,该参数是一个字典 conn.request('GET',request_url,body,headers)result = conn.getresponse()print u'获取百度新闻'print result.statusprint result.reasonif __name__ == '__main__':nb = NewsBaidu()nb.request()
运行效果
status =200 ,表示请求成功 ,result.read()
二、分析页面HTML
1、我们要抓取的内容,百度新闻左侧的列表的标题、href
2、加载re模块,正则匹配出我们要的内容, 我们先看看HTML样式
这是我们要抓取的上面一部分页面HTML,我们可以看到 <a href="http://www.gov.cn/zhengce/2016-02/22/content_5044753.htm" target="_blank" class="a3" mon="ct=1&a=1&c=top&pn=1">总理发话 科技成果将堂堂正正走出"深闺"</a> ,包含我们想要的内容, 【总理发话 科技成果将堂堂正正走出"深闺"】 和href这部分的内容 【http://www.gov.cn/zhengce/2016-02/22/content_5044753.htm】 用正则提取出来
pattern = re.compile(r'<strong>.*?href="(.*?)" target="_blank" class="a3" mon="ct=1&a=1&c=top&pn=[0-9]+">(.*?)</a>.*?strong>',re.S)
下面一部分要抓取的HTML内容,我就不再分析,原理都一样。
三、源码
#!/usr/bin/python
# -*- coding:utf-8 -*-import httplib
import urllib
import reclass NewsBaidu(object):def __init__(self):super(NewsBaidu,self).__init__()self.f = open(u'百度新闻.txt','a')def request(self):try:conn = httplib.HTTPConnection('news.baidu.com') #请求的hostrequest_url = '/' #请求的网页路径body = '' #请求的参数headers = {} #请求所带的头信息,该参数是一个字典 conn.request('GET',request_url,body,headers)result = conn.getresponse()print u'获取百度新闻'print result.statusprint result.reason#print result.read()if result.status == 200:data = result.read()self.main(data)except Exception,e:print efinally:conn.close()self.f.close()def main(self,data):print u'获取中...'pattern = re.compile(r'<strong>.*?href="(.*?)" target="_blank" class="a3" mon="ct=1&a=1&c=top&pn=[0-9]+">(.*?)</a>.*?strong>',re.S)items = re.findall(pattern,data)content = ''for item in items:content +=item[1].strip()+'\t'+item[0].strip()+'\t\n'pattern = re.compile(r'<a href="(.*?)" target="_blank" mon="r=1">(.*?)</a>',re.S)items = re.findall(pattern,data)for item in items:pattern = re.compile(r'^http://.*<a href="(.*)$',re.S) #url 对某些url再次正则获取url = re.findall(pattern,item[0])if url:u = url[0]else :u = item[0]content +=item[1].strip()+'\t'+u.strip()+'\t\n' pattern = re.compile(r'<a href="(.*?)" mon="ct=1&a=2&c=top&pn=[0-9]+" target="_blank">(.*?)</a>',re.S)items = re.findall(pattern,data)del items[0]for item in items:content +=item[1].strip()+'\t'+item[0].strip()+'\t\n'self.f.write(content)print u'完成'if __name__ == '__main__':nb = NewsBaidu()nb.request()
python爬虫(抓取百度新闻列表)相关推荐
- python爬虫抓取百度图片_Python爬虫抓取百度的高清摄影图片
成果预览: 源代码: import requests import re url = 'https://image.baidu.com/search/index' headers = { 'User- ...
- Python爬虫抓取百度搜索图片
最近玩机器学习,想搞一个关于识别动漫图片的训练集,苦于没有太多的动漫图片,后来忽然想到百度图片可以拿来用,于是乎写了个简单的爬虫,用来抓取百度图片(关于某个关键字的图片) 第一步,找到搜索图片的url ...
- 使用python爬虫爬取百度新闻,告诉你社会热点话题
1.网络爬虫基础使用 (1)urllib介绍: urllib中包括了四个模块,包括: urllib.request:可以用来发送request和获取request的结果 urllib.error:包含 ...
- python爬取百度贴吧中的所有邮箱_使用 Python 编写多线程爬虫抓取百度贴吧邮箱与手机号...
原标题:使用 Python 编写多线程爬虫抓取百度贴吧邮箱与手机号 不知道大家过年都是怎么过的,反正栏主是在家睡了一天,醒来的时候登QQ发现有人找我要一份贴吧爬虫的源代码,想起之前练手的时候写过一个抓 ...
- 如何用python爬股票数据_python爬虫股票数据,如何用python 爬虫抓取金融数据
Q1:如何用python 爬虫抓取金融数据 获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇使用的版本为 ...
- python爬虫招聘-Python爬虫抓取智联招聘(基础版)
原标题:Python爬虫抓取智联招聘(基础版) 作者:C与Python实战 「若你有原创文章想与大家分享,欢迎投稿.」 对于每个上班族来说,总要经历几次换工作,如何在网上挑到心仪的工作?如何提前为心仪 ...
- Python学习教程:Python爬虫抓取技术的门道
Python学习教程:Python爬虫抓取技术的门道 web是一个开放的平台,这也奠定了web从90年代初诞生直至今日将近30年来蓬勃的发展.然而,正所谓成也萧何败也萧何,开放的特性.搜索引擎以及简单 ...
- 编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
这篇文章主要介绍了编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法,用到了Python的urllib和urllib2模块,需要的朋友可以参考下 抓取豆瓣电影TOP100 一.分析豆瓣top ...
- Python爬虫抓取某音乐网站MP3(下载歌曲、存入Sqlite)
Python爬虫抓取某音乐网站MP3(下载歌曲.存入Sqlite) 最近右胳膊受伤,打了石膏在家休息.为了实现之前的想法,就用左手打字.写代码,查资料完成了这个资源小爬虫.网页爬虫, 最主要的是协议分 ...
最新文章
- 题目 1470:【蓝桥杯】【入门题】【基础练习VIP】时间转换
- Cissp-【第1章 安全和风险管理】-2020-12-31(58页-85页)
- 【Android WebSocket】Android 端 WebSocket 基本用法 ( 添加依赖和权限 | 创建 WebSocketClient 客户端类 | 建立连接并发送消息 )
- Lazy Load, 延迟加载图片的 jQuery 插件
- Buildroot构建指南——工具链
- 什么是PermGen泄漏?
- java 的类和接口的变量调用
- golang-gui编程
- php邀请码演示代码,WordPress主题纯代码实现邀请码功能
- javaSE回顾---变量
- calendR :为你定制私人专属日历
- 使用新操作码在比特币现金上进行首次原子竞猜
- java ntp授时服务器,时间同步服务器NTP
- secoclient免积分下载
- bluecms 手把手教你0day挖掘-基础入门篇
- 显示器几种常见的接口
- vscode编译 不允许使用与号()。 运算符是为将来使用而保留的;请用双引号将与号引起来(““),以将其作为字符串的一部分传递
- 曲师大校徽 透明背景 多颜色可选 多样式可选
- 国外投资哪些域名比较受欢迎?
- python爬取旅游信息_python爬取全国13个城市旅游数据,告诉你那里最受欢迎