文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

利用requests和正则表达式爬取虎扑

2023-01-31 02:07

关注

正则表达式
解释:符合某个模式(规则)的文本
在线测试工具:https://tool.oschina.net/regex
详细的正则表达式规则,可见:http://www.runoob.com/python3/python3-reg-expressions.html


re模块
概述:re为正则表达式提供了很多api,对正则表达式的使用提供了便利。
修饰符:
 1、re.I:忽略大小写
 2、re.M:多行匹配
 3、re.S:是.匹配包括换行在内的所有字符
方法:match()
参数:正则表达式,待匹配的字符串,修饰符,返回一个SRE.Match对象
代码演示:

content = 'Hello World Python3.6'
pattern = '^\w{5}\s\w{5}\s[p]+\w{5}\d\S\d'
result = re.match(pattern,content,re.I)
print(result.group())

SRE.Match对象的方法有:
group():返回匹配的内容
span():匹配的范围


贪婪模式和非贪婪模式
 贪婪匹配:.*会匹配尽可能多的字符
 非贪婪匹配:格式是.?,或匹配尽可能少的字符


re模块其他方法
   search():和match()类似,但match从字符串开头就开始匹配,若匹配不到就会返回None,而search则不会;
  findall():获得所有匹配的内容
  sub():修改文本
  compile():将正则表达式编译成对象,可重复使用
代码演示:

content = 'birthday:19970704'
result = re.sub('\d','5',content)#参数:正则表达式,被替换字符串,被修改文本
print(result)

爬取虎扑网球员得分榜
首先打开虎扑网,切到得分榜页面:https://nba.hupu.com/stats/players/pts
点击下一页,查看得分榜51-100的球员,发现此时链接变成:https://nba.hupu.com/stats/players/pts/2 ,多点几页就会发现得分榜链接的构造是:https://nba.hupu.com/stats/players/pts/ + 页数
再查看元素(按F12),发现表格的每一行是这么组成的:
利用requests和正则表达式爬取虎扑网球员数据
于是就可以写正则表达式了,需要获取的内容用括号括起来
代码如下:

import requests
import re

def get_Page(url):
#获取网页内容
headers = {
'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'
}
response = requests.get(url,headers=headers)
if response.status_code == 200:
return response.text
else:
print('您输入的网址错误!')

def parse_page(html):
#解析网页
pattern = '<tr>.*?<td.*?>(.*?)</td>.*?<td.*?><a.*?>(.*?)</a></td>.*?<td.*?><a.*?>(.*?)</a></td>.*?<td.*?>(.*?)</td>.*?'
items = re.findall(pattern, html,re.S)
# for item in items:
#     print(item[0],item[1],item[2],item[3])
return items

def save(content):
with open('nba.txt','a',encoding='utf-8') as f:
for item in content:
f.writelines(item)
f.write('\n')

if __name__ == '__main__':
#保存前得分榜150名
base_url = 'https://nba.hupu.com/stats/players/pts/'
for i in range(1,4):
url = base_url + str(i)
html = get_Page(url)
reslut = parse_page(html)
save(reslut)

结果展示:
利用requests和正则表达式爬取虎扑网球员数据

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯