python爬取自如网房源信息,2024BAT大厂Python社招面试题

解析单页源码

  • 解析html文档, 目的: 测试XPath表达式

将获取的源码保存到当前文件夹下的"result.html"中, 然后通过XPath对其进行相应内容的提取, 当然你也可以使用某些在线工具.

from lxml import etree

#解析html文档

html = etree.parse(“./resul.html”,etree.HTMLParser())

results = html.xpath(‘//ul[@id=“houseList”]/li’)

for result in results[1:]:

title = result.xpath(“./div/h3/a/text()”)[0][5:] if len(result.xpath(“./div/h3/a/text()”)[0]) >5 else “”

location = result.xpath(“./div/h4/a/text()”)[0].replace(“[”,“”).replace(“]”,‘’)

area = " “.join(result.xpath(”./div/div/p[1]/span/text()“)).replace(” “,”“,1) #使用join方法将列表中的内容以” "字符连接

nearby = result.xpath(“./div/div/p[2]/span/text()”)[0]

print(title)

print(location)

print(area)

print(nearby)

解析源代码

from lxml import etree

def parse_one_page(sourcehtml):

‘’‘解析单页源码’‘’

contentTree = etree.HTML(sourcehtml) #解析源代码

results = contentTree.xpath(‘//ul[@id=“houseList”]/li’) #利用XPath提取相应内容

for result in results[1:]:

title = result.xpath(“./div/h3/a/text()”)[0][5:] if len(result.xpath(“./div/h3/a/text()”)[0]) > 5 else “”

location = result.xpath(“./div/h4/a/text()”)[0].replace(“[”, “”).replace(“]”, ‘’)

area = " “.join(result.xpath(”./div/div/p[1]/span/text()“)).replace(” “, “”, 1) # 使用join方法将列表中的内容以” "字符连接

nearby = result.xpath(“./div/div/p[2]/span/text()”)[0]

yield {

“title”: title,

“location”: location,

“area”: area,

“nearby”: nearby

}

def main():

page = 1

html = get_one_page(page)

print(type(html))

parse_one_page(html)

for item in parse_one_page(html):

print(item)

if name == ‘main’:

main()

time.sleep(1)

获取多个页面

def parse_one_page(sourcehtml):

‘’‘解析单页源码’‘’

contentTree = etree.HTML(sourcehtml) #解析源代码

results = contentTree.xpath(‘//ul[@id=“houseList”]/li’) #利用XPath提取相应内容

for result in results[1:]:

title = result.xpath(“./div/h3/a/text()”)[0][5:] if len(result.xpath(“./div/h3/a/text()”)[0]) > 5 else “”

location = result.xpath(“./div/h4/a/text()”)[0].replace(“[”, “”).replace(“]”, ‘’)

area = " “.join(result.xpath(”./div/div/p[1]/span/text()“)).replace(” “, “”, 1) # 使用join方法将列表中的内容以” "字符连接

#nearby = result.xpath(“./div/div/p[2]/span/text()”)[0].strip()这里需要加判断, 改写为下句

nearby = result.xpath(“./div/div/p[2]/span/text()”)[0].strip() if len(result.xpath(“./div/div/p[2]/span/text()”))>0 else “”

yield {

“title”: title,

“location”: location,

“area”: area,

“nearby”: nearby

}

print(nearby)

#yield {“pages”:pages}

def get_pages():

“”“得到总页数”“”

page = 1

html = get_one_page(page)

contentTree = etree.HTML(html)

pages = int(contentTree.xpath(‘//div[@class=“pages”]/span[2]/text()’)[0].strip(“共页”))

return pages

def main():

pages = get_pages()

print(pages)

for page in range(1,pages+1):

html = get_one_page(page)

for item in parse_one_page(html):

print(item)

if name == ‘main’:

main()

time.sleep(1)

存储到MongoDB中

需确保MongoDB已启动服务, 否则必然会存储失败

def save_to_mongodb(result):

“”“存储到MongoDB中”“”

创建数据库连接对象, 即连接到本地

client = pymongo.MongoClient(host=“localhost”)

指定数据库,这里指定ziroom

db = client.iroomz

指定表的名称, 这里指定roominfo

db_table = db.roominfo

try:

#存储到数据库

if db_table.insert(result):

print(“—存储到数据库成功—”,result)

except Exception:

print(“—存储到数据库失败—”,result)

完整代码


1 # -- coding: utf-8 --

2

3 import requests

4 import time

5 import pymongo

6 from lxml import etree

7 from requests.exceptions import RequestException

8 def get_one_page(page):

9 ‘’‘获取单页源码’‘’

10 try:

11 url = “http://hz.ziroom.com/z/nl/z2.html?p=” + str(page)

12 headers = {

13 ‘Referer’:‘http://hz.ziroom.com/’,

14 ‘Upgrade-Insecure-Requests’:‘1’,

15 ‘User-Agent’:‘Mozilla/5.0(WindowsNT6.3;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/68.0.3440.106Safari/537.36’

16 }

17 res = requests.get(url,headers=headers)

18 if res.status_code == 200:

19 return res.text

20 return None

21 except RequestException:

22 return None

23 def parse_one_page(sourcehtml):

24 ‘’‘解析单页源码’‘’

25 contentTree = etree.HTML(sourcehtml) #解析源代码

26 results = contentTree.xpath(‘//ul[@id=“houseList”]/li’) #利用XPath提取相应内容

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
img

华为、OPPO等大厂,18年进入阿里一直到现在。**

深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
[外链图片转存中…(img-VuxAHC3B-1710877459397)]

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值