Wget 与 python 请求给出不同的结果

问题描述 投票:0回答:1

我一直在尝试从这个网站提取交易记录:https://www.house730.com/en-us/deal/?type=rent

研究堆栈溢出,我偶然发现了一个解决方案,它使用

urllib.request
+
selenium.webdriver
下载并渲染网页。

类似这样的事情,在

load_data.py
:

from selenium import webdriver
from urllib.request import urlopen

import os

url = "https://www.house730.com/en-us/deal/?type=rent"
file_name = os.path.abspath(".") + "/tmp"

conn = urlopen(url)
data = conn.read()
conn.close()

file = open(file_name, "wb")
file.write(data)
file.close()

browser = webdriver.Firefox()
browser.get("file:///" + file_name)
html = browser.page_source
browser.quit()

print(html)

但是,当我跑步时

python load_data.py > tmp.html

并打开

tmp.html
。页面似乎崩溃了:

enter image description here

这也会发生在

wget
上。

wget "https://www.house730.com/en-us/deal/?type=rent" -O index.html

但是他们给出了不同的结果 html。为什么?

load_data.py 的结果:
https://gist.github.com/pond-nj/5fd51f81441463996ed20a8003981742#file-load_data_tmp-html

来自

wget
的结果:
https://gist.github.com/pond-nj/5fd51f81441463996ed20a8003981742#file-wget_index-html

看起来

wget
已经比
load_data.py
处理了更多的html。因为wget有一堆格式化的记录
<div class="deal-data"
/>。这是为什么?

此外,这可能是一个很难问的问题。但是打开加载的 html 时页面崩溃的原因可能是什么?

html selenium-webdriver web-crawler wget
1个回答
0
投票

使用

urllib.request
+
selenium.webdriver
下载并渲染 网页。

稍后意味着执行可能用于修改的 JavaScript 代码(如果存在)。 GNU

wget
不支持 JavaScript 执行,因此 JavaScript 代码的效果不会生效。您可以尝试在 Firefox 中禁用 JavaScript,如如何使用 selenium 在 Firefox 中禁用 javascript? 所示,然后检查结果。如果它们仍然不同,则可能是由于服务器根据User-Agent提供响应而导致的。

© www.soinside.com 2019 - 2024. All rights reserved.