Python webscraping使用Javascript处理请求的表单

时间:2016-11-11 10:29:18

标签: javascript python selenium

我正在尝试从此页面中删除生成的页面:

http://data.philly.com/philly/property/

我正在使用254 W Ashdale St作为我的试用条目,当我在浏览器中执行此操作时,它会指示我在HTML中寻找的结果(尽管相同的URL)。

Python请求成功地将我输入的地址放在结果页面中,但是我无法获取所有者信息,这正是我想要抓取的。我一直在尝试使用Selenium和phantomjs,我所做的一切都在起作用。

我也对表单操作感到困惑,它似乎与表单所在页面的URL相同。

我感谢任何建议或帮助!

1 个答案:

答案 0 :(得分:0)

Selenium几乎可以处理所有事情,只需查找元素,输入信息,找到按钮,点击它,然后转到所有者,点击它并获取您需要的信息。

import selenium
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('http://data.philly.com/philly/property/')

#enter the street address
driver.find_element_by_name('LOC').send_keys('254 W Ashdale St')
#click on the submit button
driver.find_element_by_name('sendForm').click()

#find the owner
owner_tag = driver.find_elements_by_tag_name('td')[2]
owner = driver.find_elements_by_tag_name('td')[2].text
print(owner)

#click on the owner
owner_tag.find_element_by_tag_name('a').click()

#get the table with the relevant info    
rows = driver.find_element_by_tag_name('tbody').find_elements_by_tag_name('tr')

#get the row with the sale prices
sale_prices = list()
for row in rows:
    sale_prices.append(row.find_elements_by_tag_name('td')[4].text)

print('\n'.join(sale_prices))

输出:

FIRSTNAME LASTNAME
$123,600.00
$346,100.00
[..]
$789,500.00