python爬虫零基础

请问大家为什么会报错呀,这个网址是对的。为啥变白了呀?谢谢!

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])

img

问题点:第七行代码错误
分析思路: 混合使用单引号和双引号来表示字符串引起了冲突.
请注意,在混合使用单引号和双引号时,确保引号的开头和结尾是匹配的,以避免语法错误。
代码修改为

# 使用单引号包含字符串,而在字符串内部使用双引号:
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)
  1. 接下来,我们可以使用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选择器,可以选择出对应的元素列表。通过遍历titlesphotos列表,我们可以获取到标题和图片的信息。

综上所述,我们可以采用上述的方法解决这个问题。如果有任何问题,请随时提出。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^