2015-04-28 5 views
1

Я использую mechanize & python для обхода веб-сайта и получения данных. Пока я могу отправить форму и получить контент с этой страницы. Но я не могу нажать на ссылку «Следующая страница» и получить данные. Мой код выглядит следующим образом:crawling through pagination 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) 

Теперь на странице результатов есть кнопка с текстом «Следующая страница >>». Я попробовал его, щелкнув используя следующий код:

кнопка HTML:

<a onclick="javascript:goToPage('currentPage', '3')" href="#">Next Page &gt;&gt;</a> 

Python код:

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

Но не успех.

Пожалуйста, помогите мне, как нажать на следующую кнопку и получить данные оттуда до следующей страницы.

ответ

1

Я нашел проблему в механизации, которая не поддерживает javascript. Всякий раз, когда механизация достигает страницы после отправки, тогда javascript, не работающий из-за этого щелчка страницы, не запускается. Я достиг того, что хочу, используя selenium. и прекрасный суп с использованием селектора селена:

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