鱼C论坛

 找回密码
 立即注册
查看: 143|回复: 4

[已解决]极客爬虫的top250为啥我一样的代码可以运行但是打印不出任何东西?

[复制链接]
发表于 2024-12-5 22:38:52 | 显示全部楼层 |阅读模式
10鱼币
import requests
import bs4
res = requests.get("https://movie.douban.com/top250")
soup = bs4.BeautifulSoup(res.text, "html.parser")
targets = soup.find_all("div", class_="hd")
for each in targets:
    print(each.a.span.text)
最佳答案
2024-12-5 22:38:53
可能的原因有以下几点:

1. **请求被阻止**:豆瓣可能会阻止来自某些IP地址的请求,或者需要特定的请求头信息。你可以尝试在请求中添加一些头信息,比如`User-Agent`,以模拟浏览器请求。

2. **页面结构变化**:豆瓣的页面结构可能发生了变化,导致`find_all`方法没有找到任何匹配的元素。你可以检查页面的HTML结构,确认`"div", class_="hd"`是否仍然存在。

3. **网络问题**:网络连接问题可能导致请求没有成功返回页面内容。可以检查网络连接,或者尝试在不同的时间段运行代码。

可以尝试以下方法来解决:
import requests
import bs4

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
}

res = requests.get("https://movie.douban.com/top250", headers=headers)
soup = bs4.BeautifulSoup(res.text, "html.parser")
targets = soup.find_all("div", class_="hd")
for each in targets:
    print(each.a.span.text)

尝试添加`User-Agent`头信息,并确保页面结构没有变化。如果问题仍然存在,可以进一步检查网络连接或使用代理。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

最佳答案

查看完整内容

可能的原因有以下几点: 1. **请求被阻止**:豆瓣可能会阻止来自某些IP地址的请求,或者需要特定的请求头信息。你可以尝试在请求中添加一些头信息,比如`User-Agent`,以模拟浏览器请求。 2. **页面结构变化**:豆瓣的页面结构可能发生了变化,导致`find_all`方法没有找到任何匹配的元素。你可以检查页面的HTML结构,确认`"div", class_="hd"`是否仍然存在。 3. **网络问题**:网络连接问题可能导致请求没有成功返回页面 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-12-5 22:38:53 | 显示全部楼层    本楼为最佳答案   
可能的原因有以下几点:

1. **请求被阻止**:豆瓣可能会阻止来自某些IP地址的请求,或者需要特定的请求头信息。你可以尝试在请求中添加一些头信息,比如`User-Agent`,以模拟浏览器请求。

2. **页面结构变化**:豆瓣的页面结构可能发生了变化,导致`find_all`方法没有找到任何匹配的元素。你可以检查页面的HTML结构,确认`"div", class_="hd"`是否仍然存在。

3. **网络问题**:网络连接问题可能导致请求没有成功返回页面内容。可以检查网络连接,或者尝试在不同的时间段运行代码。

可以尝试以下方法来解决:
import requests
import bs4

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
}

res = requests.get("https://movie.douban.com/top250", headers=headers)
soup = bs4.BeautifulSoup(res.text, "html.parser")
targets = soup.find_all("div", class_="hd")
for each in targets:
    print(each.a.span.text)

尝试添加`User-Agent`头信息,并确保页面结构没有变化。如果问题仍然存在,可以进一步检查网络连接或使用代理。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-12-5 23:21:11 | 显示全部楼层
我加了一行:
print(res)
发现输出“<Response [418]>”,说明被拦截了,你需要用 User Agent
import requests
import bs4
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
}
res = requests.get("我权限不够,你自己改掉", headers=headers)
soup = bs4.BeautifulSoup(res.text, "html.parser")
targets = soup.find_all("div", class_="hd")
for each in targets:
    print(each.a.span.text)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-12-6 00:43:28 | 显示全部楼层
本帖最后由 小甲鱼的二师兄 于 2024-12-6 00:44 编辑

<Response [418]> 是指你的爬虫请求返回了 HTTP 状态码 418,也就是 “I'm a teapot” 状态码。这是一个愚人节玩笑性质的状态码,但在某些情况下,它可能被用作限制或阻止爬虫的标志。

  • HTTP 418 状态码来源于 RFC 2324,原本是作为一个幽默提案的“Hyper Text Coffee Pot Control Protocol (HTCPCP)”的一部分。
  • 它的原始语义是 “我是一个茶壶,无法冲泡咖啡”,表示服务器拒绝完成请求,因为它的功能设计不支持。
  • 实际使用中,很多服务器、CDN 或反爬虫系统会用 418 来标识某些类型的非法请求,或者作为一种防护机制来对抗爬虫。

服务器可能检测到你的请求模式、User-Agent 或其他特征,不符合正常用户的行为,因此返回 418 状态码。

确保你的请求头中包含一个合理的 User-Agent,伪装成正常的浏览器行为。例如:
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36'
}
response = requests.get(url, headers=headers)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-12-6 16:12:15 | 显示全部楼层
本帖最后由 isdkz 于 2024-12-6 16:17 编辑
import requests
import bs4
res = requests.get("https://movie.douban.com/top250", headers={"User-Agent": ""})
soup = bs4.BeautifulSoup(res.text, "html.parser")
targets = soup.find_all("div", class_="hd")
for each in targets:
    print(each.a.span.text)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 01:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表