(6-14)爬虫程序示例

文章目录

1.爬虫程序示例

import re
import requests## 从指定网页上爬取数据
from urllib.parse import quote #导入quote方法对URL中的字符进行编码
class BaiduNewsCrawler: #定义BaiduNewsCrawler类
headersParameters = { #发送HTTP请求时的HEAD信息
	 'Connection': 'Keep-Alive',
	 'Accept': 'text/html, application/xhtml+xml, */*',
	 'Accept-Language':
	'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3',
	 'Accept-Encoding': 'gzip, deflate',
	 'User-Agent':
	'Mozilla/6.1 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko'
}

def __init__(self, keyword, timeout): #定义构造方法,首先要传入关键词和超时时间
	self.url='http://news.baidu.com/ns?word='
	+ quote(keyword) + '&tn=news&from=news&cl=2&rn=20&ct=1' #要爬取的新闻网址,对keyword进行编码
	self.timeout=timeout #连接超时时间设置(单位:秒)

def GetHtml(self): #定义GetHtml方法
	request=requests.get(self.url, timeout=self.timeout,
	headers=self.headersParameters) #根据指定网址爬取网页
	self.html=request.text #获取新闻网页内容

def GetTitles(self): #定义GetTitles方法,分析网页数据,得到标题信息
	self.titles = re.findall(r'<h3 class="c-title">([\s\S]*?)</h3>',self.html) #匹配新闻标题
	for i in range(len(self.titles)): #对于每一个标题
		self.titles[i]=re.sub(r'<[^>]+>','',self.titles[i]) #去除所有HTML标记,即<...>
		self.titles[i]=self.titles[i].strip() #将标题两边的空白符去掉

def PrintTitles(self): #定义PrintTitle方法
	no=1
	for title in self.titles: #输出标题
		print(str(no)+':'+title)
		no+=1
		
if __name__ == '__main__':
bnc = BaiduNewsCrawler('南开大学',30) #创建BaiduNewsCrawler类对象
bnc.GetHtml() #获取新闻网页的内容
bnc.GetTitles() #获取新闻标题
bnc.PrintTitles() #输出新闻标题
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜欢打篮球的普通人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值