Python爬取鏈家二手房信息


1、爬取鏈家二手房信息,存入數據庫(MySQL)數據來源:鏈家

2、數據庫表結構

 

3、代碼

'''使用面向對象的方式,搭建項目框架'''
import requests
from bs4 import BeautifulSoup
import pymysql
class LianJiaSpider():
    mydb = pymysql.connect("localhost", "root", "123456", "pythontest", charset='utf8')
    mycursor = mydb.cursor()
    #初始化
    def __init__(self):
        self.url='https://bj.lianjia.com/chengjiao/pg{0}/'#初始化請求的url
        #將其偽裝成瀏覽器,對付反爬的
        self.headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'}

    #發送請求的方法
    def send_request(self,url):
        resp=requests.get(url,headers=self.headers)
        if resp.status_code==200:
            return resp
    #解析html獲取有用的數據
    def parse_content(self,resp):
        html=resp.text
        bs=BeautifulSoup(html,'html.parser')#第一個參數是要解析的內容,第二個參數是解析器
        #查找自己想要的內容
        ul=bs.find('ul',class_='listContent')
        #在劜中獲取所有的li
        li_list=ul.find_all('li')
        #遍歷
        lst=[]
        for item in li_list:
            title=item.find('div',class_='title').text#標題
            house_info=item.find('div',class_='houseInfo').text#房屋描述
            deal_date=item.find('div',class_='dealData')#成交的日期
            total_price=item.find('div',class_='totalPrice').text#總價
            position_info=item.find('div',class_='positionInfo').text#樓層信息
            unit_price=item.find('div',class_='unitPrice').text#單價
            span_list = item.find_all('span')  # 獲取掛牌價和成交周期
            agent_name = item.find('a', class_='agent_name').text  # 銷售
            lst.append((title,house_info,deal_date,total_price,position_info,unit_price,span_list[0].text,span_list[1].text,agent_name))
        #數據解析完畢,需要存儲到數據庫
        self.write_mysql(lst)

    def write_mysql(self,lst):
        sql_cixian = "INSERT INTO ershoufang values (0,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
        self.mycursor.executemany(sql_cixian, lst)
        self.mydb.commit()
        print('添加成功')
        self.mydb.close()
    #寫入數據庫
    def write_mysal(self):
        pass
    #啟動爬蟲程序
    def start(self):
        for i in range(1,2):
            full_url=self.url.format(i)
            resp=self.send_request(full_url)#發送請求
            if resp:
                self.parse_content(resp)#傳入數據



if __name__=='__main__':
    #創建類的對象
    lianjia=LianJiaSpider()
    lianjia.start()
lianjia.py

4、結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM