首页 > 编程语言 > 详细

Python爬取链家二手房信息

时间:2020-08-08 18:42:23      阅读:119      评论:0      收藏:0      [点我收藏+]

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、结果

技术分享图片

 

Python爬取链家二手房信息

原文:https://www.cnblogs.com/MoooJL/p/13458530.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!