我得到的内容与在页面上查看源代码显示的内容完全不同:
import requests
from bs4 import BeautifulSoup
URL = "http://www.indeed.com/jobs?q=python&start=740"
r = requests.get(URL)
content = r.content
soup = BeautifulSoup(content)
"Apply with" in content
for span in spans:
try:
if "Apply" in span.string:
print(span.string)
except:
pass
跨度中没有“应用”,页面上也没有“应用方式”。我可以确定我想要什么的唯一方法是“应用”部分
最佳答案
首先,您不能期望请求
为您带来与在浏览器开发人员工具中看到的完全相同的页面,因为请求
只会检索初始 HTML 页面而不执行任何 javascript,也不发出加载页面所需的任何其他请求 - 换句话说,requests
不是浏览器。
关于这个特殊案例,我实际上看到的是“轻松申请”而不是“使用您的 Indeed 简历申请”。您似乎已在浏览器中登录 Indeed。
我在请求
响应和浏览器中看到这些“轻松应用”元素:
>>> import requests
>>> from bs4 import BeautifulSoup
>>>
>>> URL = "http://www.indeed.com/jobs?q=python&start=740"
>>>
>>> r = requests.get(URL, headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36"})
>>> content = r.text
>>> soup = BeautifulSoup(content, "html.parser")
>>>
>>> for span in soup.find_all("span", class_="iaLabel"):
... print(span.text)
...
Easily apply
Easily apply
Easily apply
Easily apply
Easily apply
<小时/>
如果您想在自动化中尽可能接近浏览器,那么,好吧,使用真正的浏览器 - 您可以通过 selenium
控制真正的浏览器,如 Firefox 或 Chrome,或 headless PhantomJS。 .
关于python - requests 模块获取的内容与页面上的内容不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35469803/