python - 无法从美丽的汤中读取 html 页面
问题描述
下面的代码在输出中打印 hi 后卡住了。你能检查一下这有什么问题吗?如果该站点是安全的并且我需要一些特殊的身份验证?
from bs4 import BeautifulSoup
import requests
print('hi')
rooturl='http://www.hoovers.com/company-information/company-search.html'
r=requests.get(rooturl);
print('hi1')
soup=BeautifulSoup(r.content,"html.parser");
print('hi2')
print(soup)
解决方案
无法从美丽的汤中读取 html 页面
为什么你遇到这个问题是网站认为你是机器人,他们不会向你发送任何东西。他们甚至挂断了连接让你永远等待。
你只是模仿浏览器的请求,然后服务器会认为你不是机器人。
添加标头是处理此问题的最简单方法。但是你不应该User-Agent
只通过一些东西(比如这次)。请记住复制浏览器的请求并通过测试删除无用的元素。如果你很懒,直接使用浏览器的headers,但是上传文件的时候千万不要复制所有的headers
from bs4 import BeautifulSoup
import requests
rooturl='http://www.hoovers.com/company-information/company-search.html'
with requests.Session() as se:
se.headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
"Accept-Encoding": "gzip, deflate",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Accept-Language": "en"
}
resp = se.get(rooturl)
print(resp.content)
soup = BeautifulSoup(resp.content,"html.parser")
推荐阅读
- nhibernate - NHibernate - 如何使用参数值记录命名参数化查询?
- mysql - 如何仅使用 mySQL 数据库找到与给定字符串最匹配的记录?
- node.js - 使用node.js时无法使用jsPDF添加图像
- android - 显示大小从系统设置更改影响我的布局奥利奥
- python - Lambda python 3.7:参数验证失败:\n参数维度[0]的类型无效
- reactjs - 我有一个错误,因为将 react-native 安装到我的应用程序中
- excel - Application.OnTime 在其他工作簿打开时重新打开工作簿
- css - 如何在primeng的冻结和解冻列表中设置列的不同样式和宽度
- django - 在 ModelForm 中显示图像
- git - 避免合并在两个分支上都有更改的文件