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
- 下一篇: Python爬取链家北京租房信息!北京租