爬过分页机制化python

2024-03-28 20:38:28 发布

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

我正在使用mechanize&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)

现在在结果页面上有一个按钮,上面有文本“Next page>;”。我用下面的代码尝试了一下:

按钮HTML:

^{pr2}$

Python代码:

req = br.click_link(text_regex='Next Page >>')
r2 = br.open(req)
r2soup = BeautifulSoup(r2)

但没有成功。在

请帮助我如何单击“下一步”按钮并从那里获取数据,直到没有下一页。在


Tags: 代码inbrimportrefortable页面
1条回答
网友
1楼 · 发布于 2024-03-28 20:38:28

我发现mechanize中的问题是它不支持javascript。每当mechanize在提交后到达页面时,javascript由于分页而无法工作,因此不会触发click。我已经用selenium实现了我想要的。和美丽的汤使用以下硒选择:

elem1 = driver.find_element_by_link_text("Next Page >>")
elem1.click()

相关问题 更多 >