请问大家为什么会报错呀,这个网址是对的。为啥变白了呀?谢谢!
import requests
import re
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.67'}
ur1 = 'https://movie.douban.com/chart'
res = requests.get(ur1, headers=headers).text
#print(res)
p_title = '<a onclick="moreurl(this, {from:'mv_tops'})" href="(.*?)">'
p_photo = '<img src="(.*?)" class="m_sub_img"/>'
title = re.findall(p_title, res)
photo = re.findall(p_photo, res)
source = []
for i in range(len(title)):
source.append('豆瓣250')
print(source[i] + title[i] + photo[i])
问题点:第七行代码错误
分析思路: 混合使用单引号和双引号来表示字符串引起了冲突.
请注意,在混合使用单引号和双引号时,确保引号的开头和结尾是匹配的,以避免语法错误。
代码修改为
# 使用单引号包含字符串,而在字符串内部使用双引号:
p_title = '<a onclick="moreurl(this, {from:"mv_tops"})" href="(.*?)">'
或者
# 在三重引号(单引号或双引号)内包含带有单引号和双引号的字符串:
p_title = """<a onclick="moreurl(this, {from:'mv_tops'})" href="(.*?)">"""
【以下回答由 GPT 生成】
问题原因分析:错误信息显示是正则表达式匹配错误,可能是因为页面的网站结构变化导致匹配规则不再有效。
解决方案: 1. 首先,我们可以使用requests
库获取网页的内容。我们可以添加一个异常处理机制,以便在获取网页内容时出现错误时能够更好地处理。
import requests
try:
res = requests.get(url, headers=headers)
res.raise_for_status() # 如果请求出错,会抛出异常
text = res.text
except requests.RequestException as e:
print("请求页面出错:", e)
BeautifulSoup
库来解析网页内容,并通过CSS选择器定位元素。BeautifulSoup
可以更好地处理网页结构的变化。from bs4 import BeautifulSoup
soup = BeautifulSoup(text, 'html.parser')
titles = soup.select('div.pl2 a')
photos = soup.select('div.pic a img')
source = '豆瓣250'
for title, photo in zip(titles, photos):
print(source + title.get('title') + photo.get('src'))
上述代码中,使用select
方法传入CSS选择器,可以选择出对应的元素列表。通过遍历titles
和photos
列表,我们可以获取到标题和图片的信息。
综上所述,我们可以采用上述的方法解决这个问题。如果有任何问题,请随时提出。
【相关推荐】