跟着小甲鱼的视频操作却爬取不到top250电影的名字
import requestsimport 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)
for each in targets:
print(each.a.span.text)
到最后打印不出结果,请问哪出问题了? 问题出在代码的循环部分。在你的代码中,你使用了两个相同的循环来打印电影的名字。这就导致了重复打印的问题。
解决这个问题的方法是将两个循环合并为一个循环,这样就可以正确地打印出电影的名字。以下是修改后的代码:
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)
这样就可以正确地打印出top250电影的名字了。 不是这个问题诶,两次打印是因为我第一次打印在IDLE中没有结果,所以再试了一次,结果还是没用 被反爬虫了(这个网站只会给浏览器发送数据)
需要加一个 headers 来假装自己是浏览器
import requests
import bs4
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
res = requests.get('https://movie.douban.com/top250', headers=headers)
soup = bs4.BeautifulSoup(res.text,'html.parser')
targets = soup.find_all('div',class_='hd')
print(targets)
for each in targets:
print(each.a.span.text) liuzhengyuan 发表于 2023-10-26 08:38
被反爬虫了(这个网站只会给浏览器发送数据)
需要加一个 headers 来假装自己是浏览器
感谢大大,折腾好久了{:10_282:}
页:
[1]