Web Scrape网站带有下拉菜单,该菜单动态更改网站(Onchange)



因此,我正在尝试从网站上刮擦人口普查数据,该网站是从下拉菜单中选择县时动态变化的。看起来这样:

<select id="cat_id_select_GEO" onchange="changeHeaderSelection('GEO');
<option value="0500000US01001" select="selected">Autaga County, Alabama</option>
<select>

链接

因此,从我所做的研究中,听起来我需要提出某种要求?(硒?(但是我对如何做到这一点完全迷失了方向。一旦我选择了县,我就知道如何获取我想要的数据。但是,我从来不必刮擦网站动态变化的东西(即URL不会改变(

我知道,有些人可能会发现这是一个简单的问题...但是我读了许多其他类似的问题,并且会大大受益于我的榜样和/或将我引导到坚实的指南中。p>这就是我到目前为止一直在解决的问题。我可以看到它有点可用于选择值...但是它吐出了此错误:消息:陈述元素参考:元素未连接到页面文档 (会话信息:Chrome = 74.0.3729.169(


    for index, row in StateURLs.iterrows():
        url = row['URL']
        state = row['STATE']
        driver = webdriver.Chrome(executable_path=r'C:chromedriver.exe')
        driver.get(url)
        select_county = Select(driver.find_element_by_id('cat_id_select_GEO'))
        options = select_county.options
        for index in range(0, len(options) - 1):
            select_county.select_by_index(index)

我也很想帮助如何将此网页转换为美丽的汤,这样我就可以在选择后刮擦每个页面

主登录页面确实会带有一个查询字符串,该查询字符串返回一个json字符串,该字符串包含该信息,该字符串在提交查询时首先返回,包括结果页面上列出的更多URL。

import requests
search_term = 'searchTerm: Autauga County, Alabama'
search_term = search_term.replace(' ','+')
r = requests.get('https://factfinder.census.gov/rest/communityFactsNav/nav?N=0&_t=1558559559868&log=t&searchTerm=term ' + search_term + ',Alabama&src=').json()

这是JSON

的示例

我可以生成在浏览器中使用的正确URL,该URL将所有数据返回JSON,但似乎无法配置请求,因此可以使用。也许其他人可以捡起它并解决这个问题。我明天再看。

r = requests.get('https://factfinder.census.gov/rest/communityFactsNav/nav?N=0&_t=1558559559868&log=t&searchTerm=term ' + search_term + ',Alabama&src=', allow_redirects= True).json()
url = 'https://factfinder.census.gov' + r['CFMetaData']['measuresAndLinks']['links']['2017 American Community Survey'][0]['url']
code = url.split('/')[-2]
url = 'https://factfinder.census.gov/tablerestful/tableServices/renderProductData?renderForMap=f&renderForChart=f&pid=ACS_17_5YR_{}&prodToReplace=ACS_16_5YR_{}&log=t&_ts=576607332612'.format(code, code)

最新更新