2017-01-11 91 views
0

這是我的第一篇文章,所以我很抱歉,如果它是重複的,但我找不到與我有關的答案。如果有,請讓我知道,我會檢查出來。Python搜索和刮結果

我試圖抓住一個網站(下面)找到伯克利租金天花板,我遇到的麻煩是我似乎無法弄清楚如何插入地址到搜索框中,並從下一頁颳去信息。過去,我使用的網址隨搜索輸入而改變,但不在本網站上。我認爲我最好的選擇是使用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你如何從新網頁上的信息,一旦後已發送?或者換句話說,什麼是使用request.post的框架,然後request.get或bs4在URL沒有改變時進行刮擦?

我在想它看起來像這樣,但我確定我需要一個GET請求,但不知道URL在沒有變化時會如何工作。

我會將信息導出到csv文件和Excel表格中,但我可以稍後處理。只是想把肉弄開。

謝謝你的幫助!

+1

我沒有在這裏看到任何實際問題......你發佈的解決方案有什麼問題? –

+0

謝謝,我在解釋中遇到了一點點 –

+1

這個問題太廣泛了。堆棧溢出並不是一個可以讓其他人爲你教程或編寫代碼的地方,而是一個你需要幫助或指導時可以提出具體問題的地方。在這種情況下,您有效地要求某人告訴您如何爲您編寫此代碼。根據你的代碼示例,看起來'data'可能包含你需要的東西......不是嗎?請具體說明。 – garrettmurray

回答

0

正如您在鏈接中看到的那樣,此搜索不通過重定向,因此您無法將查詢傳遞到URL中。 我不確定如何直接使用ASP.NET後端(由於後端驗證/驗證可能會非常棘手)。 我認爲一些自動化(測試)工具可以幫助您(例如PhantomJS和/或CasperJS)。它可以讓你控制渲染的網頁,你可以通過編程將查詢輸入到輸入中,並在響應後獲取數據。

+0

這兩個都是JavaScript只是正確的? –

+0

PhantomJS是一個獨立的應用程序(無頭瀏覽器),CasperJS只是JS包裝器。你可以用Python來使用PhantomJS。示例http://stackoverflow.com/questions/13287490/is-there-a-way-to-use-phantomjs-in-python –