用XPath一分钟上手爬虫,良心之作__一蓑烟雨任平生

[Python实战项目] - xpath 爬虫实战,获取纵横小说网连载小说最新章节(一) 本教程可以一键获取连载小说最新章节,只需要运行一下代码,直接打开浏览器看小说未看的最新章节开发环境 Python版本: python3.6 Python第三方库:requests、lxml、webbrowser Pycharm软件版本:pycharm 2017.1.3 电脑系统:Windows 10 64位系统 浏览器: Chrome 59.0.3071.86本文的源码在github上:https: 阅读详情

XPath爬取网站信息

之前一直使用BeautifulSoup 爬取各种网站数据

下午研究了下XPath,只能说太牛B

会者不难,难者不会,你会爱上XPath

废话不多说,直接上源码

# encoding=utf-8
import requests
from bs4 import BeautifulSoup  # 用来解析网页
import uuid
import pymysql
import time  # 导入时间隔
import datetime
import threading
from lxml import etree
import os

os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 '
                  'Safari/537.36',
    'Accept-Language': 'zh-CN,zh;q=0.8'
}


def func():
    # 获取现在时间
    now_time = datetime.datetime.now()
    # 获取明天时间
    next_time = now_time + datetime.timedelta(days=+1)
    next_year = next_time.date().year
    next_month = next_time.date().month
    next_day = next_time.date().day
    # 获取明天3点时间
    next_time = datetime.datetime.strptime(str(next_year) + "-" + str(next_month) + "-" + str(next_day) + " 22:00:00",
                                           "%Y-%m-%d %H:%M:%S")
    # # 获取昨天时间
    # last_time = now_time + datetime.timedelta(days=-1)

    # 获取距离明天3点时间,单位为秒
    timer_start_time = (next_time - now_time).total_seconds()
    conn = pymysql.connect(host='127.0.0.1', user='root', passwd='123456', db='zhang', charset='utf8')
    cur = conn.cursor()
    print("数据库已连接")
    for i in range(1, 2):  # 爬取第一页到第3页的数据
        resp = requests.get(
            f"http://www.wbncp.com/PriceQuery.aspx?PageNo={i}&ItemName=牛肉&DateStart=&DateEnd=").content.decode('utf-8')
        et_html = etree.HTML(resp)
        html_data = et_html.xpath('//*/body/form/table[5]/tr/td[3]/table[2]/tr/td[1]/table/tr/td/table[3]/tr')
        # .encode('ISO-8859-1').decode('UTF-8')
        print(html_data)

        for i in html_data:
            print(i.xpath('td')[0].text.strip())
            print(i.xpath('td')[1].text.strip())
            print(i.xpath('td')[2].text.strip())
            print(i.xpath('td')[3].text.strip())
            print(i.xpath('td')[5].text.strip())
            print(i.xpath('td')[7].text.strip())
        # dd = soup.find_all('table')[21].find_all('tr')
        # for ss in dd:  # tr是每一行内容,在所有的行中,遍历每一列的内容
        #     shopDate = ss.findAll('td')[0].text.strip()
        #     print(shopDate)
        # # if str(datetime.datetime.now().day) == str(shopDate.split('-')[2].strip('0')):
        # productId = str(uuid.uuid1())
        # name = ss.findAll('span')[1].text.strip()
        # area = ss.findAll('span')[2].text.strip()
        # price = ss.findAll('span')[3].text.strip('元/斤')
        # unit = '元/斤'
        # sql = "insert into price_data(id,name,area,price,unit,creatime) VALUES (%s,%s,%s,%s,%s,%s)"
        # cur.execute(sql, (productId, name, area, price, unit, shopDate))
        # print("sql已执行")

        print(f"一个页面完事了{i}")
        conn.commit()
        time.sleep(1)  # 防止服务器蹦了,间隔一秒钟
    cur.close()
    conn.close()
    print(timer_start_time)
    timer = threading.Timer(timer_start_time, func)
    timer.start()


# 定时器,参数为(多少时间后执行,单位为秒,执行的方法)
timer = threading.Timer(2, func)
timer.start()

注释加黑的代码是之前的BeautifulSoup 爬取的代码,BeautifulSoup 这个爬取比较简单了一直用find最后来个find_all,然后遍历循环就好了,不过有利有弊

昨天就碰到了难题,一个页面30多个Table,而且class一样,难不成一个一个数去查找你要爬取的数据?

不管你们累不累,我昨天是差点崩溃了,数到21个Table才找到了我想要的数据,然后还学习了一下正则表达式,结果,哎,天生的对运算符有点抵触,学不会,然后就放弃了,然后准备学习下XPath,然后就So Easy!

XPath使用方法

  1. 第一步找到你想要获取的网页,比如你是房地产卖房子的销售,想要做个表格,来统计本市的所有房价,再或者高大上点做个趋势图,看看房价涨势
  2. 就拿安居客来说吧,打开网页
    在这里插入图片描述
  3. 然后按下F12,用鼠标选择到价格的代码位置在这里插入图片描述
  4. 然后鼠标右键,获取XPath在这里插入图片描述
  5. 把我代码里面的路径改改就完事了在这里插入图片描述
  6. 这是价格获取,相同的办法你也可以获取城市,小区,面积,户型所有的数据做成表格

XPath遇到的各种坑

又到总结的时候了,每次写出来的文章都是我踩坑几十次才得到的成果,前人种树后人乘凉,嗯,你们看好啦,以后别犯我的错哈

  1. 第一,这个编码跟BeautifulSoup很大区别,因为BeautifulSoup,解析出来的都是中文,没有乱码,而Xpath解析出来的全是乱码,经过百度几十次各种方法都测试了,找到一种办法成功了获取在这里插入图片描述获取网页的时候首先转码,不然都是乱码

  2. 获取一行数据不要加索引在这里插入图片描述

  3. 在页面上面的在页面解析后是不存在的,那是页面渲染出来的,不要添加不然永远获取的都是空值<tbody>

在这里插入图片描述

用xpath爬取小说网站 本宅女小说是本命,哈哈哈哈哈。 废话少说,上代码。 import requests from lxml import etree url = "http://book.zongheng.com/chapter/914739/59152253.html" headers={ "User-Agent" : "Mozilla/5.0 (Windows NT 6.1; Win64; x64) A... 阅读详情

相关推荐

一个简单的爬虫demo使用了一些Xpath技术

一个简单的爬虫demo使用了一些Xpath技术,能够实现抓取界面内容

python爬虫之数据提取Xpath(爬取起点中文网案例)

Xpath 详细的Xpath介绍手册——> https://www.w3school.com.cn/xpath/index.asp 1.安装xpath. pip install lxml 2.安装谷歌XPath插件 下载:chrome_Xpath_v2.0.2.crx 格式的文件。拖进插件即可。 如果安装不成功,将后缀名改成.rar,解压以后再拖拽进去就可以使用了。 效果图(减头所指的地方就可以打开XPath): 3.介绍 Xpath是在一门在XML文档种查找信息的语言。XPath可用来在XM

sjjsaaaa的博客 3219

一文读懂 AI 模型训练流程

AI模型训练流程可分为五个关键步骤:首先进行数据准备,包括收集、清洗、标注和增强数据;其次选择合适的模型架构并搭建神经网络;然后通过前向传播、损失计算和反向传播进行模型训练;接着用验证集评估模型性能,并调整超参数;最后在测试集上检验模型泛化能力。整个过程需要精心设计每个环节,才能获得性能优异的AI模型。

牧晨加油站 1478

宅男福利!程序员周末看片神器,关键还开源

(给机器学习算法与Python学习加星标,提升AI技能)开源最前线(ID:OpenSourceTop)猿妹整理别人眼中的程序员一定是这样的——每天有接不完的需求,写不完的代码,改不完的...

机器学习算法与Python学习 3万+

十大排序算法详解(一)冒泡排序、选择排序、插入排序、快速排序、希尔排序

冒泡排序、选择排序、插入排序、快速排序、希尔排序

HK的博客 18万+

深入解析Cuk、Zeta和Sepic拓扑:非隔离型开关电源的设计奥秘

本文深入解析了Cuk、Zeta和Sepic三种非隔离型开关电源拓扑的设计奥秘。它们均能实现升降压转换,但特性各异:Cuk拓扑输出反向电压,输入输出纹波极低;Sepic拓扑输出同极性电压,应用广泛;Zeta拓扑输出纹波小,适合精密供电。文章详细对比了其电路结构、工作原理、核心公式及选型指南,帮助工程师根据输入电压范围、输出极性及纹波要求,灵活选择最合适的拓扑方案。

weixin_28308325的博客 474

Java使用Xpath实现爬虫功能

Java使用Xpath实现爬虫功能 看到有人通过Xpath实现爬虫功能,就写了一个Java版本的。 全网最简单易学的教程。 网上的其他教程看着都是用 过时的方法实现的,我这是用的新方法,不会报错。

背着梦的幸存者 1616

从零开始!Jupyter Notebook的安装教程(附带pip和Python的安装教程)

本篇文章创造性的以“授人以渔”的方式教大家如何安装Jupyter Notebook、pip和Python,以及对于Jupyter Notebook代码路径的基本设置。

保证安全,保证寿终正寝的博客 13万+

爬虫学习之7:使用XPATH爬取起点小说网小说信息(保存到EXCEL)

    起点小说网如上图,爬取小说的作者、类型、连载状态、介绍和字数信息,使用Xpath并保存到EXCEL中,代码简单不做解释,如下:import xlwt import requests from lxml import etree import time headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) App...

寸先生的AI道路 4492

MCGSPro动画部件实战:用文本分段实现智能报警提示(附工程文件)

本文详细介绍了在MCGSPro组态软件中,如何利用动画部件的文本分段功能,高效实现触摸屏上的智能报警提示。通过绑定整数变量作为索引,一个部件即可动态切换多种状态信息,解决了传统方法画面臃肿、维护繁琐的痛点。文章提供了从变量定义、部件配置到逻辑联动的完整实战教程,并分享了工程文件复用与性能优化技巧。

weixin_28347369的博客 165

期末求生指南:手把手教你用浏览器开发者工具绕过百一测评切屏检测

本文详细介绍了如何利用浏览器开发者工具绕过百一测评的切屏检测功能。通过分析JavaScript事件监听机制,定位关键检测代码,并提供实时调试和本地覆盖两种修改方法,帮助学生在遵守规则的前提下更灵活地应对在线考试。文章还包含风险控制和替代方案等实用建议。

weixin_28698059的博客 546

xpath缺点

XPATH(XML路径语言)是一种在XML文档中查找信息的语言,常用于在HTML和XML文档中提取数据。但是,XPATH也有一些缺点: XPATH表达式比较复杂,对于没有经验的人来说,学习成本较高。 XPATH只能用于XML文档,对于HTML文档,如果没有正确地规范化,则可能无法正常工作。 XPATH的执行效率较低,因为它需要遍历整个文档树来查找所需的信息。 XPATH在处理大型文档时可能...

weixin_35755434的博客 672

SAP 联产品测试

最近领导一直要求研究一下SAP联产品的使用场景,之前只是自己摸索过一次,这个重新对联产品进行一个测试。 1、首先准备好物料主数据 注意主数据中需要勾选联产品标识。 设置好物料的分摊的百分比。 2、检查BOM 在BOM中也需要维护联产品的标识 只有当组件数量未负数时,才能勾选联产品的标识。如果组件数量正值,勾选联产品的标识时会报错。 3、我们创建生产订单 可以看到按正常的生产订单下达时,系统就报错了,问题点在于离散制造的生产订单基本是结算到物料的。但是联产品是按订单结算的, 所以需要对订单类型中的结算参

我小时候很黑的博客 2106

java使用xpath及获取scrip内容爬取网站数据各种心得

最近一直在用java做爬虫,都是一些没有技术含量的活,仔细想一下底层用到的大概有这算法,一个是匹配算法、一个关于树的算法,全都给我们封装好了,java真是方便、无脑,当然也很low,但是个人原因,工作效率并不高

平凡人的博客 3715

【2026年华为暑期实习(AI)-6月3日-第一题- 选择题】(题目+思路+Java&C++&Python解析+在线测试)

本文摘要: 本文探讨了深度学习与计算机科学中的多个关键概念和技术,包括CUDA双缓冲技术、神经网络训练问题、优化算法、概率模型、Transformer架构特性、量化技术、损失函数选择等。通过20道选择题和多项选择题,涵盖了梯度消失/爆炸、神经元死亡、牛顿迭代法、朴素贝叶斯分类、Adam优化器、KV Cache压缩等核心知识点。特别关注了大模型训练中的计算效率、数值稳定性问题,以及实际应用场景如客服Agent的记忆机制优化。题目设计既考察基础理论(如概率分布、指数分布特性),又结合前沿技术(如MoE架构、注意

m0_73659489的博客 81

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

java代码实现爬虫

导入相关库和框架:使用Java的HTTP客户端库,比如Apache HttpClient或者OkHttp,来发送HTTP请求和接收HTTP响应。编写爬虫代码:编写一个Java程序,该程序通过发送HTTP请求,下载HTML网页内容,并使用HTML解析器来提取所需的信息。确定要爬取的目标网站:确定要爬取的网站,可以通过查看robots.txt文件来了解该网站允许的爬取范围。设置爬虫参数:你需要设置爬虫的一些参数,比如请求头信息,请求方法,超时时间,代理服务器等。遵守网站的使用协议,不要对网站造成过大的负担。

qq_45506362的博客 1593

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Python selenium xpath —— 父子、兄弟、相邻、间隔节点定位方式详解

1. 由父节点定位子节点 最简单的肯定就是由父节点定位子节点了,我们有很多方法可以定位,下面上个例子: 对以下代码:

ShanDong_Chu 4153

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

XPath数据提取(Java版)(网络爬虫常用方法)

XML XML是一种用于标记电子文件使其具有结构性的标记语言. 虽然HTML和XML同宗同源,但是两者还是存在着重要的区别: 与HTML不同,XML是大小写敏感的.例如:<H1>与<h1>是不同的XML标签. 在HTML中,如果从上下文中可以分清哪里是段落或列表项的结尾,那么结束标签(</p>或</li>)就可以省略,而XML中结束标签绝对不能省略. 在XML中,只有单个标签而没有相对应的结束标签的元素必须以"/"结尾,如<img src="coffe

weixin_41489136的博客 2963

Python爬虫网页解析神器Xpath快速入门教学!!!

文章目录1、Xpath介绍2、Xpath路径表达式3、结合实例讲解 1、Xpath介绍      XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。 2、Xpath路径表达式 表达式 描述 nodename 选取此节点的所有子节点。 / 从根节点选取。 // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 . 选取当前节点 … 选取当前节点的父节点

Code皮皮虾的博客 2552

xpath用法以及 使用案例

xpath语法: 1.常用规则: 1. nodename: 节点名定位 2. //: 从当前节点选取子孙节点 3. /: 从当前节点选取直接子节点 4. nodename[@attribute="…"] 根据属性定位标签 5. @attributename: 获取属性 6. text(): 获取文本 2.属性匹配两种情况: 多属性匹配 & 单...

weixin_45143622的博客 456

使用java实现一个简单的抓取安居客租房信息的爬虫

 最近,实验室的师兄马上就要毕业,要在工作的附近租个房子。于是自己就抱着玩一下的心态去安居客上爬取租房信息。首先我是用的是Jsoup来分析html网页,从中获得我们所需要的数据。在得到这些数据之后,再将这些数据导入到我们本地的excel表格中,这里我使用了网上的一个开源工具包xxl-excel很好用。接下来我们就可以开始动手爬取网页信息了。首先打开安居客的网页。先在网站上初步刷选。我使用的是谷歌浏...

gottawangzi的博客 3649

Xpath介绍

 XPath is a language for finding information in an XML document. XPath is used to navigate through elements and attributes in an XML document.Xpath是一种能够在XML文档中寻找信息的语言。它通过XML文档中的元素和属性来进行导航。 Wha

sunrainwind的专栏 881

java爬虫工具xpath提取_爬虫 xpath (数据提取)

xpath 是数据提取的一种常用的方法XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML 文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。选取节点XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者...

weixin_30478151的博客 1171

xpath详解

#!/usr/bin/env python# -*- coding:utf-8 -*-"""1. 网页的解析方式1) xpath(简单)2) 正则(最难)3) css(需要懂网页的css)4) bs4(比xpath难一点点)2. xpath的基本用法1) 环境准备:    火狐浏览器(版本49.0以下)    firebug    firexpath2) 基本操作//元素标签名例如: //div,...

baidu_32542573的博客 3万+

[Java爬虫] 使用 Xpath + HtmlUnit 爬取网页基本信息

一、前言 使用 Jsoup + HttpClient (组合一)基本可以爬取很多我们需要的信息了,Xpath + HtmlUnit (组合二)的组合更是强大,无论是从选择上,还是从解析上,都可以胜任组合一的。下面列举一个简单的例子,主要展示了其主要的技术:①模拟浏览器、②使用代理IP、③取消CSS、JS解析、④Xpath的简单使用 Ⅰ、其他基础: ① 使用Xpath的一个例子:使用...

IT小村 7671

Python爬虫_宅男福利?妹纸勿点__一蓑烟雨任平生

咳咳直接上代码 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2020/12/15 19:10 # @Author : huni # @File : 图库大全1000.py # @Software: PyCharm import requests from lxml import etree import os if __name__ == '__main__': headers = { 'User-A

Jaeger_Java的博客 1万+
上一篇: 数据库优化三部曲(3)-分库分表-一蓑烟雨任平生
下一篇: 惠农网_破译反爬虫_使用代理IP爬取数据(源码)_一蓑烟雨任平生
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值