python 爬取链家网北京租房信息
剛學習了python,中途遇到很多問題,查了很多資料,最關鍵的就是要善于調試,div信息一定不要找錯,下面就是我爬取租房信息的代碼和運行結果:
鏈家的房租網站
兩個導入的包
1.requests 用來過去網頁內容
2.BeautifulSoup
import time
import pymssql
import requests
from bs4 import BeautifulSoup
#https://bj.lianjia.com/zufan
完整代碼如下:
import requests
import uuid
import time
from bs4 import BeautifulSoup
from src.request import send as send
from src.database import database as database
def requestHtmlData() :
conn = database.initDataConnect()url = "https://bj.lianjia.com/zufang/pg{0}/#contentList"headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36 Edg/96.0.1054.43' } i = 1; while(1==1):rurl = url.replace("{0}",str(i))print("請求地址:"+rurl)i+=1if(i>100):i=1resp = requests.get(rurl,headers=headers)#print(resp.text) #網頁內容 文本#print(resp.content.decode('utf-8')) #網頁內容 二進制html=resp.textsoup =BeautifulSoup(html,'html.parser')#解析#print (soup)infos = soup.findAll(class_='content__list--item')#print(infos)for info in infos:try:data_house_code = info.attrs['data-house_code']name = info.find(class_='content__list--item--aside').attrs['title']price = info.find(class_='content__list--item--main').find(class_='content__list--item-price').find('em').get_text();area = info.find(class_='content__list--item--main').find(class_='content__list--item--des').a.get_text();addresses = info.find(class_='content__list--item--main').find(class_='content__list--item--des').findAll('a');address = addresses[0].get_text()+'-'+addresses[1].get_text()+'-'+addresses[2].get_text()tags = info.find(class_='content__list--item--main').find(class_='content__list--item--bottom').findAll('i');tagStr = ''for tag in tags:if(tagStr!='') :tagStr += '-'tagStr += tag.get_text()deleteSql = "delete from building_data where id = '"+data_house_code+"';"database.execSql(deleteSql)insertSql = "INSERT INTO building_data (id, name, adrress, area, price, location, bz) VALUES ('"+data_house_code+"', '"+name+"', '"+address+"', '"+area+"', '"+price+"', '', '"+tagStr+"');"database.execSql(insertSql)except Exception as e:print(e)print("睡眠5s")time.sleep(5)總結
我們用到的數據有時候不是現成的,需要從網上爬取。python提供了很好的爬蟲包,有requests、BeautifulSoup. scrapy。可以直接導入。
1、首先安裝需要用到的包 requests 和 BeautifulSoup。2、抓取和解析頁面鏈家網的租房列表頁,URL結構為:https://bj.lianjia.com/zufang/pg/bj表示城市 zufang是頻道名稱首頁面碼 我們要抓取的是北京的租房頻道,所以前面的部分不會變。將URL分為兩部分,前面的固定部分賦值給url,后面使用while循環遍歷頁面。我們使用while循環生成做分頁,轉化格式后于前面的URL固定部分拼成要抓取的URL。將抓取的頁面保存到html中#循環抓取列表頁信息。BeautifulSoup對頁面進行解析#解析抓取的頁面內容=BeautifulSoup(html,‘html.parser’)完成解析后,就開始對頁面中的關鍵信息進行提取了。我們提取租房的價格、小區,地址,戶型,面積,價格更新時間等信息,最后將抓取信息存入數據庫!
希望對剛學習爬蟲的小伙伴有幫助!(?˙▽˙?)
總結
以上是生活随笔為你收集整理的python 爬取链家网北京租房信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 创业计划书和商品计划书PPT模板-朴尔P
- 下一篇: 【计算理论】图灵机 ( 图灵机示例 )