pythonurllib2在所有脚本运行后读取页面

2024-10-02 18:17:51 发布

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

我试图用urllib2读取页面,以便从页面中提取数据。页面的一部分是每次加载时生成的,当我用urllib2读取url时,这个部分不在我得到的html中。在

url是http://nametrends.net/name.php?name=Ruby,我试图获取为该图生成的表。 例如:

<div aria-label="A tabular representation of the data in the chart." style="position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden;">
        <table>
            <tbody>
            <tr><td>Sat Feb 01 1947 00:00:00 GMT-0500 (EST)</td><td>0.048</td><td>0</td></tr>
            </tbody>
         </table>
</div>

我目前的代码是:

^{pr2}$

它找不到该表,并且在带有文本表格的html中没有div(它是包含该表的div的标签)


Tags: the数据namedivhttpurlhtmltable
3条回答

如果可以使用urllib2以外的其他方法,Selenium可以轻松地执行此类任务,并进行实际的浏览器模拟:

from selenium import webdriver
from bs4 import BeautifulSoup

url = 'http://nametrends.net/name.php?name=Ruby'
driver = webdriver.Firefox()
driver.get(url)
# wait until 'tabular' appears on browser
assert 'tabular' not in driver.page_source

html = BeautifulSoup(driver.page_source)
for table in html.find_all('table'):
    print table

一开始我会说:

bs = BeautifulSoup(the_page)
html = bs.html

你的代码看起来不错。去。。。在

^{pr2}$

将显示页面解析为什么样的美丽汤。在

该表由附加的XHR请求返回给getfrequencyjson.php端点的数据填充。您需要在代码中发出该请求并解析JSON数据:

import requests

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36'}

with requests.Session() as session:
    session.headers = headers
    session.get('http://nametrends.net/name.php', params={'name': 'ruby'}, headers=headers)

    response = session.get('http://nametrends.net/chartdata/getfrequencyjson.php', params={'name': 'ruby'})
    results = response.json()
    print results

相关问题 更多 >