对初次使用爬虫的一些建议
Some nudges for a first-time scraper
我正在尝试以编程方式(在 Python 中)从 this 网站检索我拥有的属性列表的帐户信息(由 BRT 号码标识)。
这应该很简单,我已经通过 Google 阅读了一些我发现的东西,但由于我没有 Web 开发经验所以所有的白话都是一只耳朵出另一只耳朵。
程序应该很简单,因为网页看起来很简洁:
设置brt
,例如883309000
.
打开url:http://www.phila.gov/revenue/RealEstateTax/default.aspx
.
Select by BRT Number
字段并输入 brt
.
单击 >>
按钮检索 属性 信息。
抓取底线(TOTALS
)和准确到现在的日期,在本例中:
TOTALS ,359.83 ,539.14 ,417.73 ,645.59 ,962.29
和
06/30/2015
我主要停留在第 3 步和第 4 步。我已经做到了:
import mechanize
from bs4 import BeautifulSoup
br = mechanize.Browser()
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36')]
br.open('http://www.phila.gov/revenue/RealEstateTax/default.aspx')
soup = BeautifulSoup(br.response().read())
#Here's the BRT Number field
soup.find("input",{"id":"ctl00_BodyContentPlaceHolder_SearchByBRTControl_txtTaxInfo"})
#Here's the "Lookup by BRT" button
soup.find("input",{"id":"ctl00_BodyContentPlaceHolder_SearchByBRTControl_btnTaxByBRT"})
但我真的不知道从那里该做什么。任何帮助将不胜感激。
您是否考虑过 python 使用 selenium 包。
这方面的文档是 here,我强烈建议你通读这篇文章,运行 一些基本测试来检查你的理解并在开始之前再次浏览它。
Selenium 的重点是像在浏览器中一样加载页面并执行命令(您可以使用 python 代码自动执行)。
首先导入selenim:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
然后启动 webdriver 并加载页面,'assert' 将在继续之前检查页面标题中是否包含 "Revenue Department"。
driver = webdriver.Firefox()
driver.get("http://www.phila.gov/revenue/RealEstateTax/default.aspx")
assert "Revenue Department" in driver.title
接下来我们需要selectBRT输入框并发送密钥brt
driver.find_element_by_id("ctl00_BodyContentPlaceHolder_SearchByBRTControl_txtTaxInfo").send_keys(brt)
最后我们需要按下 >> 按钮
driver.find_element_by_id("ctl00_BodyContentPlaceHolder_SearchByBRTControl_btnTaxByBRT").click()
现在您应该被带到结果页面
我正在尝试以编程方式(在 Python 中)从 this 网站检索我拥有的属性列表的帐户信息(由 BRT 号码标识)。
这应该很简单,我已经通过 Google 阅读了一些我发现的东西,但由于我没有 Web 开发经验所以所有的白话都是一只耳朵出另一只耳朵。
程序应该很简单,因为网页看起来很简洁:
设置
brt
,例如883309000
.打开url:
http://www.phila.gov/revenue/RealEstateTax/default.aspx
.Select
by BRT Number
字段并输入brt
.单击
>>
按钮检索 属性 信息。抓取底线(
TOTALS
)和准确到现在的日期,在本例中:TOTALS ,359.83 ,539.14 ,417.73 ,645.59 ,962.29
和
06/30/2015
我主要停留在第 3 步和第 4 步。我已经做到了:
import mechanize
from bs4 import BeautifulSoup
br = mechanize.Browser()
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36')]
br.open('http://www.phila.gov/revenue/RealEstateTax/default.aspx')
soup = BeautifulSoup(br.response().read())
#Here's the BRT Number field
soup.find("input",{"id":"ctl00_BodyContentPlaceHolder_SearchByBRTControl_txtTaxInfo"})
#Here's the "Lookup by BRT" button
soup.find("input",{"id":"ctl00_BodyContentPlaceHolder_SearchByBRTControl_btnTaxByBRT"})
但我真的不知道从那里该做什么。任何帮助将不胜感激。
您是否考虑过 python 使用 selenium 包。 这方面的文档是 here,我强烈建议你通读这篇文章,运行 一些基本测试来检查你的理解并在开始之前再次浏览它。
Selenium 的重点是像在浏览器中一样加载页面并执行命令(您可以使用 python 代码自动执行)。
首先导入selenim:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
然后启动 webdriver 并加载页面,'assert' 将在继续之前检查页面标题中是否包含 "Revenue Department"。
driver = webdriver.Firefox()
driver.get("http://www.phila.gov/revenue/RealEstateTax/default.aspx")
assert "Revenue Department" in driver.title
接下来我们需要selectBRT输入框并发送密钥brt
driver.find_element_by_id("ctl00_BodyContentPlaceHolder_SearchByBRTControl_txtTaxInfo").send_keys(brt)
最后我们需要按下 >> 按钮
driver.find_element_by_id("ctl00_BodyContentPlaceHolder_SearchByBRTControl_btnTaxByBRT").click()
现在您应该被带到结果页面