我想用javascript来获取网页中的数据。你知道吗
在第一个图像中,有一个高亮显示的链接供您单击。你知道吗
之后,你将得到第二张图片中的网页。你知道吗
所需数据突出显示。你知道吗
我可以使用requests
和BeautifulSoup
获取数据。你知道吗
第二个图像中的数据是在显示给我们之前使用javascript从某处检索的。你知道吗
如何使用javascript获取数据?你知道吗
import requests
from bs4 import BeautifulSoup
import lxml
fig1_url = r'https://huangshigongyuanzy.fang.com/'
fig2_url = r'https://huangshigongyuanzy.fang.com/house/2612049076/fangjia.htm'
headers = {'user-agent':r'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}
resp = requests.get(fig2_url, headers=headers)
resp.encoding='GB18030'
soup = BeautifulSoup(resp.text, 'lxml')
for i in soup.find('div', {'id': 'priceListOpen'}).findAll('tr'):
for j in i.findAll('td'):
print(j.text+'|',end = ' ')
print('\n' + '-'*50)
您可以运行代码段here。
我打开
fig2_url
,发现这个页面使用的是服务器呈现。所以,你必须使用一些工具从中提取数据。你知道吗这个article为我们提供了一个完美的教程。你知道吗
当你浏览一个网站时,首先要寻找的是使用条款。一些网站明确提出了使用他们的网站与刮API的可能性。一定要先看看这些。你知道吗
你考虑过使用SeleniumWebDriver吗?我正在研究另一个项目,它看起来很有希望。它实际上调用了你的浏览器,所以它应该为你做javascript(我认为):
似乎有用。你知道吗
注意事项:
它依赖于Mozilla geckodriver,依赖于github。
你不能像请求那样伪造头部;但是,既然它实际上是用Firefox打开的,你可能不需要这样做。
至少在上面的代码中,它打开了一个浏览器和geckodrive窗口;可能有一些方法可以抑制这种情况,但我还没有研究它。这只是赤裸裸的尝试。[编辑:问题How to hide Firefox window (Selenium WebDriver)?描述了如何用PhantomJS解决这个问题。我没有试过。]
相关问题 更多 >
编程相关推荐