Python 搜索和抓取结果

Python search and scrape results

这是我的第一个 post,如果重复,我深表歉意,但我找不到与我相关的答案。如果有请告诉我,我会去看看。

我正在尝试抓取一个网站(如下)以查找伯克利租金上限,我遇到的问题是我似乎无法弄清楚如何将地址插入搜索框并从下一个抓取信息页。过去 URLs 我曾使用搜索输入进行更改,但未在本网站上进行过更改。我认为我最好的选择是使用 bs4 来抓取信息,并使用 request.sessionrequests.post 来获取每个后续​​地址。

#Berkeley Rent Scrape
from bs4 import BeauitfulSoup
import sys
import requests
import openpyxl
import pprint
import csv

#wb = openpyxl.load_workbook('workbook.xlsx', data_only=True)
#sheet = wb.get_sheet_by_name('worksheet')


props_payload={'aspnetForm':'1150 Oxford St'}
URL = 'http://www.ci.berkeley.ca.us/RentBoardUnitSearch.aspx'

s = requests.session()
p = s.post(ULR, data = props_payload)
soup = BeauitfulSoup(p.text)
data = soup.find_all('td', class="gridItem")

UPDATE post 发送后如何从新网页获取信息?或者换句话说,当 URL 不变时使用 request.post 然后 request.get 或 bs4 刮擦的框架是什么?

我原以为它看起来像这样,但我确定我需要一个 GET 请求在那里的某个地方,但不明白当 URL 没有改变时会话是如何工作的。

我会将信息导出到 csv 文件和 excel sheet,但我可以稍后处理。只想把肉拿开。

感谢您的帮助!

如您在 link 中所见,此搜索不通过重定向进行,因此您无法将查询传递到 URL。 我不确定如何直接使用 ASP.NET 后端(由于后端 authentication/validation,这可能很棘手)。 我认为一些自动化(测试)工具可以帮助你(例如 PhantomJS and/or CasperJS)。它使您可以控制呈现的网页,您可以通过编程方式将查询放入输入并在响应后获取数据