如何在Python中使用javascript获取数据?

2024-05-26 22:56:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用javascript来获取网页中的数据。你知道吗

在第一个图像中,有一个高亮显示的链接供您单击。你知道吗

之后,你将得到第二张图片中的网页。你知道吗

所需数据突出显示。你知道吗

我可以使用requestsBeautifulSoup获取数据。你知道吗

第二个图像中的数据是在显示给我们之前使用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)

您可以运行代码段hereenter image description hereenter image description here


Tags: 数据https图像importcomurl网页javascript
2条回答

我打开fig2_url,发现这个页面使用的是服务器呈现。所以,你必须使用一些工具从中提取数据。你知道吗

这个article为我们提供了一个完美的教程。你知道吗

当你浏览一个网站时,首先要寻找的是使用条款。一些网站明确提出了使用他们的网站与刮API的可能性。一定要先看看这些。你知道吗

你考虑过使用SeleniumWebDriver吗?我正在研究另一个项目,它看起来很有希望。它实际上调用了你的浏览器,所以它应该为你做javascript(我认为):

from selenium import webdriver
fig2_url = r'https://huangshigongyuanzy.fang.com/house/2612049076/fangjia.htm'
driver = webdriver.Firefox()
driver.get(fig2_url)
driver.page_source.encode('GB18030')

soup = BeautifulSoup(driver.page_source, 'lxml')
for i in soup.find('div', {'id': 'priceListOpen'}).findAll('tr'):
  for j in i.findAll('td'):
    print(j.text+'|',end = ' ')
  print('\n' + '-'*50)

似乎有用。你知道吗

注意事项:

  1. 它依赖于Mozilla geckodriver,依赖于github。

  2. 你不能像请求那样伪造头部;但是,既然它实际上是用Firefox打开的,你可能不需要这样做。

  3. 至少在上面的代码中,它打开了一个浏览器和geckodrive窗口;可能有一些方法可以抑制这种情况,但我还没有研究它。这只是赤裸裸的尝试。[编辑:问题How to hide Firefox window (Selenium WebDriver)?描述了如何用PhantomJS解决这个问题。我没有试过。]

相关问题 更多 >

    热门问题