我正在使用机械化& python抓取网站并获取数据。到目前为止,我可以提交表单并从该页面获取内容。但我无法触发点击“下一页”链接并获取数据。我的代码如下:
import re
import mechanize
from bs4 import BeautifulSoup
br = mechanize.Browser()
br.set_handle_robots(False)
br.open("http://portal.uspto.gov/EmployeeSearch/")
br.select_form(name="SearchEmployeeDataBean")
br.form['name'] = 'a'
response = br.submit()
soup = BeautifulSoup(response)
table = soup.find_all('table')[16]
rows = table.find_all('tr')
data = [[td.findChildren(text=True) for td in tr.findAll("td")] for tr in rows]
for a in data:
if a:
examiner = " ".join(a[0][1].split())
phone = a[1][1]
extension_office = a[3][1]
office_description = "|".join(re.findall(r'\d+', a[4][1]))
# print(examiner, phone, extension_office, office_description)
现在在结果页面上有一个按钮,其中包含文本“下一页>>”。我尝试使用以下代码点击:
按钮HTML:
<a onclick="javascript:goToPage('currentPage', '3')" href="#">Next Page >></a>
Python代码:
req = br.click_link(text_regex='Next Page >>')
r2 = br.open(req)
r2soup = BeautifulSoup(r2)
但没有成功。
请帮助我如何点击下一个按钮并从那里获取数据,直到没有下一页。
答案 0 :(得分:1)
我发现机械化问题是它不支持javascript。每当机械化提交后到达页面,然后由于它的分页点击没有触发javascript工作。我用selenium实现了我的目标。和美丽的汤使用以下硒选择器:
elem1 = driver.find_element_by_link_text("Next Page >>")
elem1.click()