BeautifulSoup 并且 MechanicalSoup 不会读取网站

BeautifulSoup and MechanicalSoup won't read website

我正在处理 BeautifulSoup 并且也在 MechanicalSoup 上尝试它,我已经让它加载到其他网站,但是当我请求网站被请求时它需要很长时间然后永远不会真正得到它。任何想法都会非常有帮助。

这是我正在编写的 BeautifulSoup 代码:

import urllib3
from bs4 import BeautifulSoup as soup

url = 'https://www.apartments.com/apartments/saratoga-springs-ut/1-bedrooms/?bb=hy89sjv-mN24znkgE'

http = urllib3.PoolManager()

r = http.request('GET', url)

这是 Mechanicalsoup 代码:

import mechanicalsoup

browser = mechanicalsoup.Browser()

url = 'https://www.apartments.com/apartments/saratoga-springs-ut/1-bedrooms/'
page = browser.get(url)
page

我想做的是收集不同城市和公寓的数据,所以 url 会变成两居室,然后是三居室,然后它会搬到另一个城市,做同样的事情,所以我真的需要这部分才能工作。

如有任何帮助,我们将不胜感激。

如果您使用 curlwget 获取页面,您会看到相同的结果。我的猜测是他们正在使用浏览器检测来防止人们窃取他们的受版权保护的信息,就像您试图做的那样。您可以搜索 User-Agent header 以查看如何伪装成其他浏览器。

import urllib3
import requests
from bs4 import BeautifulSoup as soup

headers = requests.utils.default_headers()
headers.update({
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'
})

url = 'https://www.apartments.com/apartments/saratoga-springs-ut/1-bedrooms/'

r = requests.get(url, headers=headers)

rContent = soup(r.content, 'lxml')

rContent

正如 Tim 所说,我需要在我的代码中添加 headers 以确保它不是从机器人读取的。