python 爬取贝壳网小区名称_如何使用 python 爬取全国小区名称
前言
筆者在做一個 NLPNLPNLP 項目時,需要識別小區(qū)名,因此想要查詢網(wǎng)上是否有相關的數(shù)據(jù)集。經(jīng)過一番搜索后一無所獲…從而決定自己來爬取這份數(shù)據(jù)。
由于爬取網(wǎng)站的內(nèi)容信息之后可能會發(fā)生變更,因此此處給出具體的爬蟲思路,便于應對之后的網(wǎng)站結構變更。
方法
1. 爬取網(wǎng)站的確定
既然是爬蟲,那首先就需要確定爬取網(wǎng)站。這時候就需要思考哪些網(wǎng)站可能會涉及小區(qū)名字?
國家統(tǒng)計網(wǎng)?經(jīng)過一番搜索,沒找到…
房屋中介網(wǎng)?√
因此我們可以選取比較知名的房屋中介網(wǎng)來進行小區(qū)名爬取,此處選取的網(wǎng)站是鏈家,原因是該網(wǎng)站有專門的小區(qū)板塊。鏈家
新龍城
因此我們增加一行代碼來提取 imgimgimg 標簽中的信息并輸出。
text_list = soup.find_all('img', class_="lj-lazy")
for item in text_list:
print(item['alt'])
# 輸出結果:
# 首開康乃馨城
# 農(nóng)光里
# 理想家園
# 華貿(mào)城
# 住欣家園
# 遠洋山水
# 旗勝家園
# 小南莊社區(qū)
# ...
第三步,構造網(wǎng)站 urlurlurl
首先我們考慮頁面如何構造。這個難度不大,我們只需要 forforfor 一遍頁面編號即可。這個網(wǎng)站有一個特點在于,網(wǎng)站上可能只顯示了 303030 頁,但是實際上可能有 100100100 頁…并且假如第 100100100 頁是最后一頁,那么第 101101101 頁的內(nèi)容將與第 100100100 頁保持一致。因此我們根據(jù)當前網(wǎng)頁是否與上一個網(wǎng)頁一致,來判斷當前網(wǎng)站爬取是否結束。
def get_housing_estate():
fo = open("data/housing_estate.txt", "w")
# 設置初始值
last = BeautifulSoup(requests.get(url.format("wz", 1)).text, 'lxml').find_all('img', class_="lj-lazy")
for city in address_list:
for page in range(1, 500):
print(city, page)
# 創(chuàng)建bs對象
try:
response = requests.get(url.format(city, page)).text
except:
# 頁面出錯,則更換下一個城市
break
soup = BeautifulSoup(response, 'lxml') # 使用到了lxml解析庫
text_list = soup.find_all('img', class_="lj-lazy")
# 出現(xiàn)重復頁面
if text_list == last:
break
last = text_list
# 寫入文件
for item in text_list:
fo.write(item['alt'] + 'n')
接下來就要考慮城市簡寫如何爬取了。我們可以根據(jù)這個網(wǎng)站中提供的城市分類來對網(wǎng)站進行爬取。
總結
以上是生活随笔為你收集整理的python 爬取贝壳网小区名称_如何使用 python 爬取全国小区名称的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python的lib文件夹_python
- 下一篇: linux redis-4.0,Linu