gpt4 book ai didi

javascript - urlopen/requests.get 未获取所有页面内容

转载 作者:行者123 更新时间:2023-11-28 04:37:26 25 4
gpt4 key购买 nike

我正在尝试使用 Python 抓取房地产网站以获取有关公寓的信息。我需要的所有信息都在存储在页面头部(ava_data)的 JavaScript 变量中。

我正在使用 cloud9(在线 IDE)工作,我不想退出它。我正在使用 Beautiful Soup 进行抓取。

from bs4 import BeautifulSoup
import os
import requests

url = 'http://www.seloger.com/list.htm?idtt=1&idtypebien=1,2&ci=750120,750114&tri=initial&naturebien=1&nb_pieces=2&pxmax=1250&surfacemin=40'
seloger_html = requests.get(url)
soup = BeautifulSoup(seloger_html.text,'html.parser')
path = os.getcwd() + '/COMPLET/scrap_seloger.txt'
f = open(path, 'w')
f.write(soup.prettify().encode('utf8'))

我无法一致从汤中的页面获取所有信息。为了验证这一点,我把美化后的汤写在一个txt文件中。
当它工作时,我得到以下文件(与我从 Chrome 中的检查中得到的文件相同):https://ufile.io/eue0b
如果没有,我会得到以下信息:https://ufile.io/f1dnx

在几十次试验中,我只成功获得了 4-5 次正确的文件。据我所知,我第一次尝试 urllib.urlopen() 和第一次尝试 requests.get() 是正确的。据我所知,在其他时候起作用之前我没有做过任何特别的事情。每次成功,下一次就会失败。

  • 我尝试在 Chrome 上禁用 Javascript,然后打开 url 以获取不带 JS 的 DOM。和以前一样。 --> 我猜这不是用 JS 添加到 DOM 的东西的问题。
  • 正如之前所暗示的,我尝试了 urllib 和 requests。两者工作不一致。
  • Cookie 不应成为问题,因为 session 每次都会发生变化。
  • 由于我使用的是 Cloud9,因此无法通过浏览器使用 Selenium。

最佳答案

该网站正在使用一些反抓取技术。您必须设置 User-Agent header 来伪造浏览器访问。

url = 'http://www.seloger.com/list.htm?idtt=1&idtypebien=1,2&ci=750120,750114&tri=initial&naturebien=1&nb_pieces=2&pxmax=1250&surfacemin=40'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0'}
seloger_html = requests.get(url, headers=headers)

同时尽量不要抓取得太快。

关于javascript - urlopen/requests.get 未获取所有页面内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44078410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com