联系我们 - 广告服务
您的当前位置:官网首页 > 资讯 > 热评 >

Python爬取租房数据实例,据说可以入门爬虫的小案例!

来源: 编辑: 时间:2019-08-06
导读: 爬虫,又名"网络爬虫",就是能够自动访问互联网并将网站内容下载下来的程序。它也是搜索引擎的基础,像百度和google都是凭借强大的网络爬虫,来检索海量的互联网信......

爬虫,又名"网络爬虫",就是能够自动访问互联网并将网站内容下载下来的程序。它也是搜索引擎的基础,像百度和google都是凭借强大的网络爬虫,来检索海量的互联网信息的然后存储到云端,为网友提供优质的搜索服务的。

你可能会说,除了做搜索引擎的公司,学爬虫有什么用呢?哈哈,总算有人问到点子上了。打个比方吧:企业a建了个用户论坛,很多用户在论坛上留言讲自己的使用体验等等。现在a需要了解用户需求,分析用户偏好,为下一轮产品迭代更新做准备。那么数据如何获取,当然是需要爬虫软件从论坛上获取咯。所以除了百度、google之外,很多企业都在高薪招聘爬虫工程师。你到任何招聘网站上搜"爬虫工程师"看看岗位数量和薪资范围就懂爬虫有多热门了。

发起请求:通过http协议向目标站点发送请求,然后等待目标站点服务器的响应。

获取响应内容:如果服务器能正常响应,会得到一个response。response的内容便是所要获取的页面内容,响应的内容可能有html,json串,二进制数据等等。

解析内容:得到的内容可能是html,可以用正则表达式、网页解析库进行解析;可能是json,可以直接转为json对象解析;可能是二进制数据,可以做保存或者进一步的处理。

保存数据:数据解析完成后,将保存下来。既可以存为文本文档、可以存到数据库中。

前面介绍了爬虫的定义、作用、原理等信息,相信有不少小伙伴已经开始对爬虫感兴趣了,准备跃跃欲试呢。那现在就来上"干货",直接贴上一段简单python爬虫的代码:

1.前期准备工作:安装python环境、安装pycharm软件、安装mysql数据库、新建数据库exam、在exam中建一张用于存放爬虫结果的表格house [sql语句:create table house,unit varchar,area varchar);]

2.爬虫的目标:爬取某租房网上首页中所有链接里的房源的价格、单位及面积,然后将爬虫结构存到数据库中。

3.爬虫源代码:如下

import requests #请求 url 页面内容
from bs4 import beautifulsoup #获取页面元素
import pymysql #链接数据库
import time #时间函数
import lxml #解析库
#get_page 函数作用:通过 requests 的 get 方法得到 url 链接的内容,再整合成beautifulsoup 可以处理的格式
def get_page:
response = requests.get
soup = beautifulsoup
return soup
#get_links 函数的作用:获取列表页所有租房链接
def get_links:
soup = get_page
links_div = soup.find_all
links=[div.a.get for div in links_div]
return links
#get_house_info 函数作用是:获取某一个租房页面的信息:价格、单位、面积等
def get_house_info:
soup = get_page
price =soup.find.text
unit = soup.find.text.strip
area = 'test' #这里 area 字段我们自定义一个 test 做测试
info = {
'价格':price,
'单位':unit,
'面积':area
return info
#数据库的配置信息写到字典
database ={
'host': '127.0.0.1',
'database': 'exam',
'user' : 'root',
'password' : 'root',
'charset' :'utf8mb4'}
#链接数据库
def get_db:
return pymysql.connect
#向数据库插入爬虫得到的数据
def insert:
values = "'{}',"*2 + "'{}'"
sql_values = values.format
sql ="""
insert into house values
""".format
cursor = db.cursor
cursor.execute
db.commit
#主程序流程:1.连接数据库 2.得到各个房源信息的 url 列表 3.for 循环从第一个 url 开始获取房源具体信息4.一条一条地插入数据库
db = get_db
links = get_links
for link in links:
time.sleep
house = get_house_info
insert

 

首先,"工欲善其事必先利其器",用 python 写爬虫程序也是一样的道理,写爬虫过程中需要导入各种库文件,正是这些及其有用的库文件帮我们完成了爬虫的大部分工作,我们只需要调取相关的借口函数即可。导入的格式就是 import 库文件名。这里要注意的是在 pycharm 里安装库文件,可以通过光标放在库文件名称上,同时按ctrl+alt 键的方式来安装,也可以通过命令行的方式安装,如果安装失败或者没有安装,那么后续爬虫程序肯定会报错的。在这段代码里,程序前五行都是导入相关的库文件:requests 用于请求 url 页面内容;beautifulsoup 用来解析页面元素;pymysql 用于连接数据库;time 包含各种时间函数;lxml 是一个解析库,用于解析 html、xml 格式的文件,同时它也支持 xpath 解析。

其次,我们从代码最后的主程序开始看整个爬虫流程:

通过 get_db 函数连接数据库。再深入到 get_db 函数内部,可以看到是通过调用pymysql 的 connect 函数来实现数据库的连接的,这里**seting 是 python 收集关键字参数的一种方式,我们把数据库的连接信息写到一个字典 database 里了,将字典里的信息传给 connect 做实参。

通过 get_links 函数,获取链家网租房首页的所有房源的链接。所有房源的链接以列表形式存在 links 里。get_links 函数先通过 requests 请求得到链家网首页页面的内容,再通过 beautifusoup 的接口来整理内容的格式,变成它可以处理的格式。最后通过电泳find_all 函数找到所有包含图片的 div 样式,再通过一个 for 循环来获得所有 div 样式里包含的超链接页签的内容,所有超链接都存放在列表links 中。
通过 for 循环,来遍历 links 中的所有链接


用和 2)同样的方法,通过使用 find 函数进行元素定位获得 3)中链接里的价格、单位、面积信息,将这些信息写到一个字典 info 里面。

调用 insert 函数将某一个链接里得到的 info 信息写入数据库的 house 表中去。深入到 insert 函数内部,我们可以知道它是通过数据库的游标函数 cursor来执行一段 sql语句然后数据库进行 commit 操作来实现响应功能。这里 sql 语句的写法比较特殊,用到了 format 函数来进行格式化,这样做是为了便于函数的复用。

最后,运行一下爬虫代码,可以看到链家网的首页所有房源的信息都写入到数据里了。

 

image.png
责任编辑:

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

上一篇:用 PYQT5 和 QT Dseingner 写的串口助手
下一篇:没有了

网友评论:

在“\templets\demo\comments.htm”原来的内容全部删除,插入第三方评论代码,如果不需要评论功能,删除comments.html里面的内容即可
推荐使用友言、多说、畅言(需备案后使用)等社会化评论插件

Copyright © 2018 博天堂918国际娱乐博天堂918国际娱乐-搏天堂918娱乐在线 All Rights Reserved Power by DedeCms
本站所有资讯来源于网络 如有侵权请联系QQ:9490489
Top