【发布时间】:2020-06-03 23:24:46
【问题描述】:
我正在尝试从以下网址抓取学校名称:https://www.niche.com/k12/search/best-public-high-schools/s/indiana/?page=1。
我想抓取 10 页,因此是 for 循环。我以前从未使用过beautifulsoup,文档也没有解决我的问题。最终,我想刮一下,因为那是学校名称所在的地方。以下是我拥有的少量代码。任何帮助都会非常有帮助!谢谢!
import bs4 as bs
import requests
numbers = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
names = []
for number in numbers:
resp = requests.get('https://www.niche.com/k12/search/best-public-high-schools/s/indiana/?page='+number)
soup = bs.BeautifulSoup(resp.text, "lxml")
school_names = soup.find('div', {'class':'"search-results"'})
for school_name in school_names:
school = school_name.find('h2')
if school:
print (school.text)
【问题讨论】:
-
您的问题/错误是什么?
-
我看到的问题是
403 Forbidden,是不是User-Agent引起的? -
我在请求之后添加了
print(resp.text),并得到了<head><title>403 Forbidden</title></head>,这是您的第一个问题。您需要阅读有关使用请求进行身份验证的内容。我不需要提及,但是,如果您需要更多帮助,请不要在此处发布您的用户/密码! -
@CCebrian 有一个很好的观点。我跑了
resp = requests.get('https://www.niche.com/k12/search/best-public-high-schools/s/indiana/?page='+number, headers={"user-agent":"Mozilla/5.0"})并得到了你的网页。关于代码的下一个问题... -
这次我得到访问此页面已被拒绝,因为我们认为您正在使用自动化工具浏览该网站。 .哎哟!因为它是真的!你需要研究如何打败它。同时,您可以在浏览器中打开该页面,将其保存,然后在文件上练习您的网络抓取。
标签: python html beautifulsoup screen-scraping