当前位置: 首页 > news >正文

python 爬虫 5i5j房屋信息 获取并存储到数据库

 1 from lxml import etree
 2 from selenium import webdriver
 3 import pymysql
 4 
 5 def Geturl(fullurl):#获取每个招聘网页的链接
 6     browser.get(fullurl)
 7     shouye_html_text = browser.page_source
 8     shouye_ele = etree.HTML(shouye_html_text)
 9     zf_list = shouye_ele.xpath('/html/body/div[4]/div[1]/div[2]/ul/li/div/h3/a/@href')#链接url
10     zf_url_list  = []
11     for zf_url_lost in zf_list:
12         zf_url  = 'https://bj.5i5j.com'+zf_url_lost
13         zf_url_list.append(zf_url)
14     return zf_url_list
15 def Getinfo(zp_url_list):
16     for zp_url in zp_url_list:
17         browser.get(zp_url)
18         zp_info_html = browser.page_source
19         zp_ele = etree.HTML(zp_info_html)
20         zp_info_title = str(zp_ele.xpath('//html/body/div[3]/div[1]/div[1]/h1/text()')[0])
21         zp_info_num = str(zp_ele.xpath('/html/body/div[3]/div[2]/div[2]/div[1]/div[1]/div/p[1]/text()')[0])+'元/月'#价格
22         zp_info_type = str(zp_ele.xpath('/html/body/div[3]/div[2]/div[2]/div[1]/div[2]/div/p[1]/text()')[0])#户型
23         zp_info_zone = str(zp_ele.xpath('/html/body/div[3]/div[2]/div[2]/div[1]/div[3]/div/p[1]/text()')[0])+'平米'#房屋大小
24         zp_info_need_1 = str(zp_ele.xpath('/html/body/div[3]/div[2]/div[2]/div[2]/ul/li[1]/span/text()')[0])#房屋信息
25         zp_info_need_2 = str(zp_ele.xpath('/html/body/div[3]/div[2]/div[2]/div[2]/ul/li[1]/a/text()')[0])#房屋信息
26         zp_info_need = zp_info_need_1+zp_info_need_2
27         connection = pymysql.connect(host='localhost', user='root', password='1234', db='5i5j', )
28         try:
29             with connection.cursor() as cursor:
30                 sql = "INSERT INTO `5i5j_info` (`title`,`num`,`type`, `zone`,`need`) VALUES (%s,%s,%s,%s, %s)"
31                 cursor.execute(sql, (zp_info_title,zp_info_num,zp_info_type,zp_info_zone,zp_info_need))
32             connection.commit()
33         finally:
34             connection.close()
35         print(zp_info_title,zp_info_num,zp_info_type,zp_info_zone,zp_info_need)
36 if __name__ == '__main__':
37     browser = webdriver.Chrome()
38     pags = int(input('需要几页?'))
39     for i in range(1,pags+1):
40         url = 'https://bj.5i5j.com/zufang/huilongguan/n{}/'
41         fullurl = url.format(str(i))
42         zf_url_list = Geturl(fullurl)
43         print(fullurl)
44         # print(zf_url_list)
45         Getinfo(zf_url_list)
46     browser.close()

 

转载于:https://www.cnblogs.com/pantom0122/p/9508514.html

相关文章:

  • HDU - 2255 奔小康赚大钱 KM算法 模板题
  • LDAP概念和原理
  • Leetcode 118 杨辉三角
  • 如何搭建lamp(CentOS7+Apache+MySQL+PHP)环境
  • 安装vmtools
  • vue基础代码
  • POJ 2516 Minimum Cost 【费用流】
  • ML面试1000题系列(51-60)
  • springboot引用dubbo的方式
  • 前端路由的两种模式:hash模式和history模式
  • PL/SQL 条件控制语句
  • centos7环境变量配错导致命令不能用
  • Testng用例失败重新运行
  • 异常行为分析模型设计
  • Android网络技术
  • JavaScript-如何实现克隆(clone)函数
  • __proto__ 和 prototype的关系
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Java 内存分配及垃圾回收机制初探
  • JavaScript的使用你知道几种?(上)
  • jquery ajax学习笔记
  • JS字符串转数字方法总结
  • Linux后台研发超实用命令总结
  • mysql常用命令汇总
  • Mysql优化
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • spring-boot List转Page
  • vue:响应原理
  • vuex 笔记整理
  • 关于使用markdown的方法(引自CSDN教程)
  • 前端之Sass/Scss实战笔记
  • 以太坊客户端Geth命令参数详解
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #QT项目实战(天气预报)
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (阿里云万网)-域名注册购买实名流程
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (四)Linux Shell编程——输入输出重定向
  • (五)关系数据库标准语言SQL
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .libPaths()设置包加载目录
  • .Mobi域名介绍
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET Core WebAPI中封装Swagger配置
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • .NET项目中存在多个web.config文件时的加载顺序
  • .NET中的Exception处理(C#)
  • @RestController注解的使用