gpt4 book ai didi

python - 具有动态更改网站的下拉菜单的网络抓取网站(onchange)

转载 作者:太空宇宙 更新时间:2023-11-03 20:51:54 25 4
gpt4 key购买 nike

因此,我试图从一个网站上抓取人口普查数据,当从下拉菜单中选择一个县时,该数据会动态变化。它看起来像这样:

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

a link

所以从我所做的研究来看,听起来我需要发出某种 Get 请求? ( Selenium ?)但我完全不知道如何做到这一点。一旦我选择了县,我就知道如何获取我想要的数据。但我从来没有必要抓取网站动态变化的东西(即网址不改变)

我知道有些人可能会发现这是一个简单的问题......但我已经阅读了许多其他类似的问题,并且如果有人引导我完成示例和/或指导我找到可靠的指南,我将受益匪浅。

这就是我到目前为止一直在搞乱的事情。我可以看到它在选择值方面有点作用...但它吐出了此错误:消息:过时的元素引用:元素未附加到页面文档 ( session 信息: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 字符串,其中包含您提交查询时首次返回的信息,包括结果页面上列出的更多网址。

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

我可以生成正确的网址以在浏览器中使用,该浏览器将所有数据作为 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)

关于python - 具有动态更改网站的下拉菜单的网络抓取网站(onchange),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56263832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com