使用python 3和Selenium来刮取动态生成的表?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (65)

我是Python的新手,并试图抓取动态生成的表。我已经足够打开页面,输入搜索,并显示结果表。我在抓取结果时遇到问题,我注意到结果的具体文本不是HTML的一部分。到目前为止,这是我的代码,感谢任何和所有的帮助。

## module importation
import os, requests, bs4, openpyxl, webbrowser, lxml, html5lib, re
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

print('Type in the FIRST NAME of the individual.')
#I've been using [Mike] here.
firstName = input()
print('Thanks. Now type in the individual\'s LAST NAME.')
#I've been using [Jones] here.
lastName = input()

browser = webdriver.Firefox(executable_path='/usr/local/bin/geckodriver')
#BoP inmate locator

#Goes to BoP website
browser.get('https://www.bop.gov/inmateloc/')
res = requests.get('https://www.bop.gov/inmateloc/')

#Clicks Search by name option (just in case)
searchByNameButton = browser.find_element_by_css_selector("#ui-id-1")
searchByNameButton.click() # clicks the Search by Name Button

#enters first name
bopSearchFirstNameElem = 
browser.find_element_by_css_selector('#inmNameFirst')
bopSearchFirstNameElem.send_keys(firstName)

#enters last name
bopSearchLastNameElem = 
browser.find_element_by_css_selector('#inmNameLast')
bopSearchLastNameElem.send_keys(lastName)

# Clicks search
searchSubmitButton = 
browser.find_element_by_css_selector('#searchNameButton')
searchSubmitButton.click() # clicks the Search Button on the BoP page

# Scrape table results
bopResultsPage = bs4.BeautifulSoup(res.text, 'html.parser')
提问于
用户回答回答于

这将完美地工作:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.ui import WebDriverWait

firstName = input('Insert your first name: ')
lastName = input('Insert your last name: ')

browser = webdriver.Firefox(executable_path='/usr/local/bin/geckodriver')
browser.get('https://www.bop.gov/inmateloc/')
browser.implicitly_wait(2)
browser.find_element_by_css_selector("#ui-id-1").click()
browser.find_element_by_css_selector('#inmNameFirst').send_keys(firstName)
browser.find_element_by_css_selector('#inmNameLast').send_keys(lastName)
browser.find_element_by_css_selector('#searchNameButton').click()
WebDriverWait(browser, 5).until(expected_conditions.text_to_be_present_in_element((By.XPATH, '//*[@id="nameBriefTd"]'), 'Results for search'))

for row in browser.find_elements_by_xpath('//*[@id="inmateTable"]/tbody/tr'):
    for cell in row.find_elements_by_xpath('td'):
        print(cell.text)
    print()

browser.close()

热门问答

腾讯会议共享屏幕,其他人收到的是黑屏?

你好,共享屏幕黑屏问题,可以先尝试把腾讯会议版更新到最新版本测试验证,如更新到最新版未能解决您的问题,可以填写以下信息: 【*会议号】 【*入会昵称】 【*注册手机号】 【*问题出现的腾讯会议版本】 【*出现平台以及版本:Android/iOS/win/mac/小程序】 【*出现...... 展开详请

实时音视频和小程序集成,设置合法域名 文档中少了一个域名?是否还有其他域名需要设置?

shixin

腾讯 · 高级产品经理 (已认证)

推荐

在开发工具上开启不校验合法域名即可,不影响真机运行,不需要配置,

Dr.Elephant支持hadoop3吗?还有编译一直有包找不到怎么解决?

目前TBDS的hadoop版本是2.7.2,建议配置文件中使用该版本号进行匹配

cos文件最大可以存储多大的问题件?

腾讯云技术服务团队

腾讯云 · 技术服务团队 (已认证)

腾讯云技术服务团队
推荐
COS简单上传最大可以上传5GB的文件,分片上传最大可以上传48.82TB (50,000GB )的文件。可参见COS产品文档https://cloud.tencent.com/document/product/436/14518 对于您提到的问题。js调用cos接口上传大于8M...... 展开详请

腾讯云IM使用不同视频创建视频消息的时候生成的缩略图都是一样,而且是透明的图片,为什么?

最爱开车啦互联网的敏感者
推荐
文档上已经有相关描述https://imsdk-1252463788.file.myqcloud.com/IM_DOC/Web/SDK.html?_ga=1.118341771.384230994.1576337691#createVideoMessage image.png ... 展开详请

如何用命令修改腾讯云解析目标ip?

氧化先生道可道 非常道 名可名 非常名
推荐
可以,参考: https://cns.api.qcloud.com/v2/index.php? &<公共请求参数> &Action=RecordCreate &domain=qcloud.com &subDomain=www &recordType=A &recordLine=默...... 展开详请

所属标签

扫码关注云+社区

领取腾讯云代金券