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

南阳网(网站).学校网站建设案例

南阳网(网站).,学校网站建设案例,能访问所有网站的浏览器,十堰网站建设weitianPython 爬虫小练 获取贝壳网数据 使用到的模块 标准库 Python3 标准库列表 os 模块:os 模块提供了许多与操作系统交互的函数,例如创建、移动和删除文件和目录,以及访问环境变量等。math 模块:math 模块提供了数学函数&#xf…

Python 爬虫小练 获取贝壳网数据

使用到的模块

标准库

Python3 标准库列表

  • os 模块:os 模块提供了许多与操作系统交互的函数,例如创建、移动和删除文件和目录,以及访问环境变量等。
  • math 模块:math 模块提供了数学函数,例如三角函数、对数函数、指数函数、常数等
  • datetime 模块:datetime 模块提供了更高级的日期和时间处理函数,例如处理时区、计算时间差、计算日期差等
  • logging 模块 :使用标准库提供的 logging API 最主要的好处是,所有的 Python 模块都可能参与日志输出,包括你自己的日志消息和第三方模块的日志消息。
  • logging.config 模块 :可配置 logging 模块。 它们的使用是可选的 — 要配置 logging 模块你可以使用这些函数,也可以通过调用主 API (在 logging 本身定义) 并定义在 logginglogging.handlers 中声明的处理器。
  • logging.handlers 模块 :这个包提供了以下有用的处理程序。 请注意有三个处理程序类 (StreamHandler, FileHandlerNullHandler) 实际上是在 logging 模块本身定义的,但其文档与其他处理程序一同记录在此。
  • urllib 模块:urllib 模块提供了访问网页和处理 URL 的功能,包括下载文件、发送 POST 请求、处理 cookies 等
  • threading 模块:线程模块提供对线程的支持
  • SQLite 3 模块:SQLite 是一个C语言库,它可以提供一种轻量级的基于磁盘的数据库,这种数据库不需要独立的服务器进程,也允许需要使用一种非标准的 SQL 查询语言来访问它。一些应用程序可以使用 SQLite 作为内部数据存储。可以用它来创建一个应用程序原型,然后再迁移到更大的数据库。

第三方库

  • requests 库: Python requests 是一个常用的 HTTP 请求库,可以方便地向网站发送 HTTP 请求,并获取响应结果。

    requests 模块比urllib模块更简洁。官网地址:Python requests

  • BeautifulSoup 库:是一个可以从HTML或XML文件中提取数据的Python库。官网地址:BeautifulSoup

使用到的相关逻辑步骤

请求URL

  • 模拟浏览器

    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36'
    }
    
  • URL编码

    import urllib.parsebaseUrl = "https://nj.ke.com/ershoufang/"url = baseUrl + "天润城/"
    encoded_url = urllib.parse.quote(url, safe='/:?+=')
    
  • 无用户认证

    response = requests.get(encoded_url, headers=headers)
    
  • 有用户认证(cookie)

    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36','Cookie': 'lianjia_token=自己的具体值'
    }response = requests.get(encoded_url, headers=headers)
    
  • 代理,公司内部若存在代理需要配置。

    proxies = {"https": "http://111:8080"}response = requests.get(encoded_url, headers=headers, proxies=proxies)
    

解析HTML

soup = BeautifulSoup(response.text, 'html.parser')
  • 取属性

    soup.select('.title a')[0].attrs.get('href')
    
  • 取标签值

    soup.select(".total span")[0].text.strip()
    

下载图片资源

# urllib.request配置代理
urllib.request.install_opener(urllib.request.build_opener(urllib.request.ProxyHandler(proxies))
)urllib.request.urlretrieve(housingImgUrl,housingTypeImagePath)

分析数据

写入SQLite 3数据库

  • 建表(执行脚本)

  • 写入

  • 异常处理

    conn = sqlite3.connect('../db/identifier.sqlite', check_same_thread=False)
    c = conn.cursor()# 执行sql脚本
    with open('../db/script/house_listing_price.sql') as sql_file:c.executescript(sql_file.read())
    conn.commit()for house_info in house_info_list:sql = f'insert into house_listing_price values (' \f'"{house_info["houseid"]}"' \f',"{house_info["title"]}"' \f',"{house_info["price"]}"' \f',"{house_info["address"]}"' \f',"{house_info["area"]}"' \f',"{house_info["sealDate"]}"' \f',"{house_info["housingType"]}"' \f',"{house_info["houseUrl"]}")'try:c.execute("BEGIN")c.execute(sql)c.execute("COMMIT")except:print("[" + str(datetime.datetime.now()) + "] " + "写入数据库异常,sql is [" + sql + "]")c.execute("ROLLBACK")
    conn.commit()
    conn.close()
    

完整示例

import requests
from bs4 import BeautifulSoup
import math
import datetime
import sqlite3
import urllib.request
import os# 代理-公司用
proxies = {"https": "http://xzproxy.cnsuning.com:8080"}
# 无代理
# proxies = {}# 下载图片第三方配置代理
urllib.request.install_opener(urllib.request.build_opener(urllib.request.ProxyHandler(proxies))
)# 模拟浏览器请求的header
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36'
}# 挂牌列表URL-不分页
url = "https://nj.ke.com/ershoufang/co22l2rs%E5%A4%A9%E6%B6%A6%E5%9F%8E%E5%8D%81%E5%9B%9B%E8%A1%97%E5%8C%BA/"
response = requests.get(url, headers=headers, proxies=proxies)
soup = BeautifulSoup(response.text, 'html.parser')
# 网站每页30条
everypagecount = 30
sumhouse = soup.select(".total span")[0].text.strip()
pagesum = int(sumhouse) / everypagecount
pagesum = math.ceil(pagesum)
# 网站只提供100页
pagesum = min(pagesum, 100)
print("[" + str(datetime.datetime.now()) + "] " + "总记录数" + str(sumhouse) + ",总页数" + str(pagesum))
# 创建一个空列表,用于存储房源信息
house_info_list = []# 请求房源列表数据
def requestUrl(real_url):response = requests.get(real_url, headers=headers, proxies=proxies)soup = BeautifulSoup(response.text, 'html.parser')# 获取房源列表数据house_list = soup.select('.sellListContent li .clear')# 循环遍历房源列表,提取所需信息for house in house_list:# 挂牌标题title = house.select('.title a')[0].text.strip()# 挂牌价格price = house.select('.totalPrice span')[0].text.strip()# 地址小区名称address = house.select('.positionInfo a')[0].text.strip()# 楼层简述area = house.select('.houseInfo')[0].text.strip().replace('\n', '').replace(' ', '').split('|')[0]area = area[0:area.index(')') + 1]# 房屋登记编号houseId = house.select('.unitPrice')[0].attrs.get('data-hid')# 房源详情页的URLhref = house.select('.title a')[0].attrs.get('href')response2 = requests.get(href, headers=headers, proxies=proxies)soup2 = BeautifulSoup(response2.text, 'html.parser')# 挂牌日期sealDate = soup2.select('.introContent .transaction li')[0].text.strip()[4:]# 户型housingType = soup2.select('.introContent .base .content li')[0].text.strip()[4:].strip()# 房屋图片列表house_images_list = soup2.select('.thumbnail .smallpic li')housingTypeImagePath = "../src/main/resources/images/housingType/" + houseId + ".jpg"for house_images in house_images_list:# 下载户型图if "户型图" == house_images.attrs.get("data-desc") and not os.path.exists(housingTypeImagePath):housingImgUrl = house_images.attrs.get("data-src")urllib.request.urlretrieve(housingImgUrl,housingTypeImagePath)# 将提取到的信息添加到房源信息列表中house_info_list.append({'title': title,'price': price,'address': address,'area': area,'houseid': houseId,'sealDate': sealDate,'housingType': housingType,'houseUrl': href})returnpageNo = 0
while pageNo < pagesum:currentPageNo = str(pageNo + 1)# 挂牌列表URL-分页url = 'https://nj.ke.com/ershoufang/pg' + currentPageNo + 'co22l2rs%E5%A4%A9%E6%B6%A6%E5%9F%8E%E5%8D%81%E5%9B%9B%E8%A1%97%E5%8C%BA/'print("[" + str(datetime.datetime.now()) + "] " + "获取第" + currentPageNo + "页")requestUrl(url)pageNo = pageNo + 1# 将房源信息列表保存为CSV文件
import csv# print("写入文件中")
# current_date = datetime.datetime.now()
# formatted_date = current_date.strftime("%Y-%m-%d")
# filename = "house_info-" + formatted_date + ".csv"
# with open(filename, 'w', newline='', encoding='utf-8-sig') as f:
#     writer = csv.writer(f)
#     writer.writerow(['标题', '价格', '地址', '位置', '房屋ID'])
#     for house_info in house_info_list:
#         writer.writerow([
#             house_info['title'], house_info['price'], house_info['address'],
#             house_info['area'], house_info['houseid']
#         ])
# print("写入完成")print("[" + str(datetime.datetime.now()) + "] " + "写入数据库")
conn = sqlite3.connect('../db/identifier.sqlite', check_same_thread=False)
c = conn.cursor()# 执行sql脚本
with open('../db/script/house_listing_price.sql') as sql_file:c.executescript(sql_file.read())
conn.commit()for house_info in house_info_list:sql = f'insert into house_listing_price values (' \f'"{house_info["houseid"]}"' \f',"{house_info["title"]}"' \f',"{house_info["price"]}"' \f',"{house_info["address"]}"' \f',"{house_info["area"]}"' \f',"{house_info["sealDate"]}"' \f',"{house_info["housingType"]}"' \f',"{house_info["houseUrl"]}")'try:c.execute("BEGIN")c.execute(sql)c.execute("COMMIT")except:print("[" + str(datetime.datetime.now()) + "] " + "写入数据库异常,sql is [" + sql + "]")c.execute("ROLLBACK")
conn.commit()
conn.close()
print("[" + str(datetime.datetime.now()) + "] " + "写入完成")
http://www.yayakq.cn/news/626631/

相关文章:

  • 柳州企业网站建设价格如何找外链资源
  • iis 子网站大理做网站
  • 医院网站建设方案青岛卓信软件app开发定制
  • 一般做网站要什么编程做国内网站花费
  • 珠海企业网站建设报价吴江公司注册
  • 深圳网站建设商学软件开发好还是网站开发好
  • 做网站有没有受骗过淘宝网 商务网站建设目的
  • 句容网站制作公司南京代做网站制作
  • 微企点做的网站怎么去底下的公司注册资金可以乱写吗
  • 建教育网站需要多少钱网站屏蔽ip地址
  • dede 网站打开自动加html自媒体交易网站开发
  • 徐州 商城网站设计国外网站关键词
  • 中国建设银行投标再什么网站上网店营业执照
  • 建设网站的项目策划书长长沙网站制作
  • 海兴县做网站谷歌seo站内优化
  • 做电影网站选择什么配置的服务器软件设计专业介绍
  • 青岛做网站公司有哪些百度收录的网页数量
  • 博罗做网站技术网站已经备案更换主机
  • 咸阳市城乡建设规划局网站吉林沈阳网站建设
  • 平阴网站建设linux wordpress 主题下载
  • 中国沙漠建设 志愿者 兵团官方网站举例说明网络营销的概念
  • 人武部正规化建设经验seo兼职在家怎么做
  • 校园微网站建设方案ppt模板海宁市住房与城乡规划建设局网站
  • 国家和城乡建设部网站wordpress给幻灯片添加图片
  • 做个免费的网站属于教育主管部门建设的专题资源网站是
  • 产品做网站不花钱WordPress立体边框
  • 青岛制作网站软件公司网站建设计入明细科目
  • 注册网站需要实名认证吗山西响应式网站建设公司
  • 建设商业网站的功能定位crm管理系统哪家好
  • 网站管理怎么做安徽制作网站专业公司