简单的一个爬虫抓取案例:以链家网租房信息为例

更新时间:2024-11-06 07:05:30 阅读: 评论:0


2023年5月22日发(作者:各校研究生分数线)

简单的⼀个爬⾍抓取案例:以链家⽹租房信息为例

我们⽤到的数据有时候不是现成的,需要从⽹上爬取。python提供了很好的爬⾍包,有requests、BeautifulSoup. scrapy。以前有

接触过爬⾍,但没有完整的实现⼀个案例,今天在七⽉在线上看到了⼀个⽼师关于数据获取和处理的视频,就想着拿个例⼦来练练⼿。

1、⾸先安装需要⽤到的包 requests BeautifulSoupTime库,负责设置每次抓取的

休息时间。

安装好后将这些库导⼊进来

import requests

import time

from bs4 import BeautifulSoup

2、抓取和解析页⾯

bj表⽰城市

zufang 是频道名称

pg3是页⾯码

我们要抓取的是北京的租房频道,所以前⾯的部分不会变,属于固定部分,后⾯的页⾯码需要在1-100间变化,属于可变部分。将URL分为

两部分,前⾯的固定部分赋值给url,后⾯的可变部分使⽤for循环遍历页⾯。

#设置列表页的固定部分

url = "/zufang/"

#设置页⾯页的可变部分

page = ("pg")

为了防⽌被封ip,所以我们需要在http请求中设置⼀个头部信息,头部信息⽹上有很多现成的,可以查看。同时也可以设置多个ip代理号,

代理号可以在某宝上买到。

#设置请求头部信息

headers = {'User-Agent':'Mozilla/5.0 (Windows T 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',

'Accept':'text/html;q=0.9,*/*;q=0.8',

'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3',

'Accept-Encoding':'gzip',

'Connection':'close',

}

'Referer':'/link?url=_andhfsjjjKRgEWkj7i9cFmYYGsisrnm2A-T3XZDQXxvGsM9k9ZZSnikW2Yds4s&wd=&eqid=c3435a7

我们使⽤for循环⽣成1-100的数字,转化格式后于前⾯的URL固定部分拼成要抓取的URL。设置每个1秒,将抓取的页⾯保存到html中

#循环抓取列表页信息

#由于抓取100的页内容,⽤时较长,所以本⽂就抓取了前50页的内容

for i in range(1,50):

if i == 1:

i = str(i)

a = (url + page + i +"/")

r = (url = a, headers = headers)

html = t

else:

i = str(i)

a = (url + page + i +"/")

r = (url = a, headers = headers)

html2 = t

html = html + html2

#每次间隔1

(1)

使⽤BeautifulSoup对页⾯进⾏解析

#解析抓取的页⾯内容

lj = BeautifulSoup(html,'')

完成解析后,就开始对页⾯中的关键信息进⾏提取了。我们提取租房的价格、⼩区,地址,户型,⾯积,价格更新时间等信息。

#提取房源价格

price = _all('div','price')

pr = []

for a in price:

totalPrice =

(totalPrice)

#提取房源⼩区信息

region = _all('span','region')

re = []

for b in region:

rrr = _text()

(rrr)

#提取房源户型信息

zone = _all('span','zone')

zo = []

for b in zone:

zzz = _text()

(zzz)

#提取房源⾯积信息

meters = _all('span','meters')

me = []

for b in meters:

mmm = _text()

(mmm)

#提取房源其他信息

other = _all('div','other')

oth = []

for c in other:

zufang = _text()

(zufang)

#提取更新时间

time = _all('div','price-pre')

ti = []

for d in time:

gengxin = _text()

(gengxin)

3、清洗数据并整理到数据表中

import pandas as pd

zufanginfo = ame({'xiaoqu':re,'huxing':zo,'mianji':me,'otherinfo':oth,'price':pr,'updatetime':ti})

()

对房源的其他信息进⾏切割操作

#对租房其他信息进⾏分列

otherinfo_split = ame((('/') for x in nfo),index = ,columns=['address','louceng','buildtime'])

#将分列后的信息拼接会原数据表中

zufanginfo = (zufanginfo,otherinfo_split,right_index=True,left_index=True)

#删除其中重复信息的列

('otherinfo',axis=1)

#导出成csv⽂件

_csv('D:/text_fenci/',header=True,index = False,sep = ',')

参考资料:

[1] 寒⼩阳⽼师在七⽉在线《数据分析班》讲的数据获取和处理这⼀节课内容


本文发布于:2023-05-22 14:59:39,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/falv/fa/86/94854.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:链家网
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 站长QQ:55-9-10-26