顺晟科技
2021-06-16 10:43:02
182
Xxxx Safari/537.36'} #记得用自己的请求头文件替换
def get_url(url):
res=requests.get(url,header=header)
bsobj=美化组(res.text,' lxml ')
URL=bsobj . select(# house-lst Li div . info-panel H2 a ')
上面的功能可以在一个页面上抓取所有房屋的具体网页链接,你可以看到上面没有新的命令,前面的文章已经介绍过了,这里就不描述了。通过这个函数,可以得到详细页面的链接,所以下一步就是构造一个函数来抓取详细页面数据。
对详细页面数据进行爬网
def get_info(url):
res=requests.get(url,header=header)
bsobj=美化组(res.text,' lxml ')
title=bsobj.find('h1 ',{'class':'main'})。get_text()
price=bsobj.find('span ',{'class':'total'})。get_text()
area=bsobj.find_all('p ',{'class':'lf'})[0]。get_text()[3:]
house_type=bsobj.find_all('p ',{'class ',' lf'})[1]。get_text()[5:]
metor=bsobj.find_all('p')[4]。get_text()[3:]
park=bsobj.find_all('p')[5]。get_text()。拆分(' \n')[0][3:]
distinct=bsobj . find _ all(' p ')[6]。get_text()。拆分(')[0][3:]
bankuai=bsobj.find_all('p')[6]。get_text()。拆分(')[1]
broker=bsobj.find('div ',{'class': 'brokerName'})。get_text()。拆分(' \n')[1]如果bsobj.find('div ',{'class': 'brokerName'})不是无其他0
phone=bsobj.find('div ',{'class': 'phone'})。get_text()。长条()。替换(' \n ',' ')。如果bsobj.find('div ',{'class': 'phone'})不是None其他0,则替换(',')
在获取网页信息时,边肖使用了find和find_all函数,所以这里有必要介绍这两个函数。这两个函数,顾名思义,是根据函数中的参数选择对应的内容,个参数是网页标签,第二个参数是属性对。一般来说,在网络爬虫中掌握这两个参数就足够了。这两个函数的典型区别在于,find函数选择个满足参数设置的项,而find_all函数用于选择所有满足参数值的项并形成一个列表,所以find_all参数的使用往往伴随着列表选择。至于参数值的设置,需要掌握一些网页代码的基础知识。这里不多说。有兴趣的朋友可以看看相关书籍。此外,在代码中,边肖还使用了一些字符串操作功能,主要包括拆分、替换和剥离。个用于根据指定的符号将字符串分成中间列表;第二个函数用于替换字符串的内容;第三个函数用于消除字符串中的空白。这三个功能是网页爬虫中经常用到的,希望你能熟练掌握。边肖关于这些功能也在以前的文章中介绍过。你可以参考边肖之前关于字符串介绍的文章。最后还要说明最后两行代码,使用的是二进制选择表达式。由于有些房子没有经纪人信息和联系电话信息,为了避免这种情况造成程序中断,采用二进制选择表达式构造变量值,在某些场景下极其有用。现在已经有了相应的web链接抓取功能和具体的web信息获取功能,是时候把它们整合在一起了。完整的代码如下。
抓取链接租赁数据的详细代码
# _*_ coding:utf-8 _*_
'''
@Author:刘仆
@Filename:贾立安_zufang.py
@Date: 2018-8-20
@Description:
# usage:抓取链家网租赁数据
# platform : win 7 python 3 visual studio代码
'''
#导入关联库
导入请求
从bs4导入美化组
将xlwings导入为xw
导入时间
#创建一个Excel文件并命名标题行
wb=xw。书()
sht=wb.sheets[0]
Sht.range('A1 ')。值='属性名'
Sht.range('B1 ')。值='社区'
Sht.range('C1 ')。价值='商业区'
Sht.range('D1 ')。值='区域'
Sht.range('E1 ')。价值='价格'
Sht.range('F1 ')。值='面积'
Sht.range('G1 ')。值='公寓类型'
Sht.range('H1 ')。值=' subway '
Sht.range('I1 ')。value=' broker '
Sht.range('J1 ')。值='联系号码'
header={ ' User-Agent ' : ' Mozilla/5.0(Windows NT 6.1;Win64x64) AppleWebKit/537.36 (KHTML,喜欢Gecko) Chrome/
12
2022-05
28
2021-08
17
2021-07
16
2021-06
16
2021-06
16
2021-06