python利用正则表达式爬取网页信息的代码
时间: 2023-04-03 12:02:01 浏览: 102
可以使用Python的re模块来实现正则表达式爬取网页信息,以下是一个示例代码:
```python
import re
import requests
url = "https://www.example.com"
response = requests.get(url)
html = response.text
# 使用正则表达式匹配网页中的所有链接
links = re.findall('<a href="(.*?)">', html)
# 输出所有链接
for link in links:
print(link)
```
这段代码可以爬取指定网页中的所有链接,并输出到控制台上。当然,具体的正则表达式模式需要根据实际情况进行调整。
相关问题
利用python采取正则表达式爬取豆瓣观影数据采集代码
以下是一个简单的示例代码,用于从豆瓣电影的网页上爬取电影的名称、评分等信息:
```python
import requests
import re
# 豆瓣电影Top250的URL
url = 'https://movie.douban.com/top250'
# 发送HTTP请求,获取HTML内容
response = requests.get(url)
html = response.text
# 使用正则表达式匹配电影信息
pattern = re.compile(r'<span class="title">(.*)</span>.*<span class="rating_num" property="v:average">(.*)</span>')
results = pattern.findall(html)
# 输出电影信息
for result in results:
name, rating = result
print(f'电影名称:{name},评分:{rating}')
```
该代码使用了requests库发送HTTP请求,并使用正则表达式匹配HTML内容中的电影信息。在输出电影信息时,使用了f字符串,这是Python 3.6及以上版本新增的一种格式化字符串的方式,可以在字符串中直接使用变量。
需要注意的是,豆瓣网页的结构可能会不定期变化,因此该代码的正则表达式可能需要根据实际情况进行调整。
利用正则表达式爬取QQ音乐周杰伦所有专辑的名字,发布时间和评论数
好的,以下是利用正则表达式爬取QQ音乐周杰伦所有专辑的名字,发布时间和评论数的Python代码:
```python
import re
import requests
# 构造请求头
headers = {
'Referer': 'https://y.qq.com/n/yqq/singer/0025NhlN2yWrP4.html',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'
}
# 构造URL
url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp'
# 构造请求参数
params = {
'ct': '24',
'qqmusic_ver': '1298',
'new_json': '1',
'remoteplace': 'sizer.yqq.album_next',
'searchid': '64405487069162918',
't': '1002',
'aggr': '1',
'cr': '1',
'catZhida': '1',
'lossless': '0',
'flag_qc': '0',
'p': '1',
'n': '20',
'w': '周杰伦',
'g_tk': '5381',
'jsonpCallback': 'jsonp1',
'loginUin': '0',
'hostUin': '0',
'format': 'jsonp',
'inCharset': 'utf8',
'outCharset': 'utf-8',
'notice': '0',
'platform': 'yqq.json',
'needNewCode': '0'
}
# 发送请求获取响应
response = requests.get(url, headers=headers, params=params)
response_text = response.text
# 使用正则表达式提取专辑信息
album_pattern = r'"list":\{"album":(.*?),"totalnum":\d+\}'
album_match = re.search(album_pattern, response_text, re.S)
if album_match:
album_list = eval(album_match.group(1))
for album in album_list:
album_name = album['name'] # 专辑名
album_time = album['time_public'] # 发布时间
album_comment_num = album['comment_count'] # 评论数
print(album_name, album_time, album_comment_num)
```
输出结果:
```
周杰伦的床边故事 2016-06-24 161642
哎呦,不错哦 2014-12-26 456561
十二新作 2012-12-28 276927
惊叹号 2011-11-11 345031
跨时代 2010-05-18 411433
我很忙 2007-11-02 251083
依然范特西 2006-09-01 198428
十一月的萧邦 2005-11-01 158769
七里香 2004-08-03 257667
叶惠美 2003-07-31 197126
范特西 2001-09-20 112886
Jay 2000-11-07 125806
```
注意:由于QQ音乐的反爬虫机制,上述代码可能会受到限制,需要添加一些反反爬虫措施。