【问题标题】:BeautifulSoup and MechanicalSoup won't read websiteBeautifulSoup 和 MechanicalSoup 不会读取网站
【发布时间】:2021-04-27 21:03:14
【问题描述】:

我正在处理 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 将更改为 2-bedrooms 和 3-bedrooms 然后它会移动到另一个城市并在那里做同样的事情,所以我真的需要这部分工作。

任何帮助将不胜感激。

【问题讨论】:

    标签: python web-scraping beautifulsoup mechanicalsoup


    【解决方案1】:

    如果您使用curlwget 获取页面,您会看到同样的情况。我的猜测是他们正在使用浏览器检测来阻止人们窃取他们的版权信息,就像你试图做的那样。您可以搜索User-Agent 标头,看看如何伪装成另一个浏览器。

    【讨论】:

    • 工作就像一个魅力。非常感谢兄弟!
    【解决方案2】:
    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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-10
      • 1970-01-01
      • 1970-01-01
      • 2018-08-27
      • 2016-08-01
      • 2021-10-26
      相关资源
      最近更新 更多