python南开大学王恺mooc_Python爬虫示例(正则表达式、靓汤、selenium),程序,BeautifulSoupselenium...

这篇博客介绍了使用Python进行网络爬虫的实践,包括利用正则表达式从百度新闻中抓取南开大学相关的新闻标题,使用BeautifulSoup解析南开大学官网新闻页面获取标题,以及借助Selenium模拟浏览器操作爬取携程酒店评价。通过这些示例,展示了Python在网络爬虫中的应用。
摘要由CSDN通过智能技术生成

1. 基于百度新闻爬取对应关键字的新闻标题

代码:

import re # 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'

}

''' ----------------------------注释-------------------------------------------

headersParameters中保存了请求头的信息,如:

headersParameters = { #发送HTTP请求时的HEAD信息

'Connection': 'Keep-Alive',

# Connection决定当前的事务完成后,是否会关闭网络连接。如果该值是“Keep-Alive”,网络连接就是持久

'Accept': 'text/html, application/xhtml+xml, */*',

#浏览器接收的媒体类型,text/html代表HTML格式,application/xhtml+xml代表XHTML格式,*/* 代表浏览器可以处理所有类型

'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3',

#浏览器申明自己接收的语言

'Accept-Encoding': 'gzip, deflate',

#浏览器申明自己接收的编码方式:通常指定压缩、是否支持压缩、支持什么方式压缩(gzip/default)

'User-Agent': 'Mozilla/6.1 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko'

#告诉HTTP服务器客户端浏览器使用的操作系统和浏览器的版本和名称

}

----------------------------注释-------------------------------------------

'''

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) #根据指定网址爬取网页

request.encoding = 'utf-8'

self.html=request.text #获取新闻网页内容

def GetTitles(self): #定义GetTitles方法

self.titles = re.findall(r'

([\s\S]*?)

',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].str

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值