Python爬虫Xpath定位数据的两种方法

方法一:直接右键,将文章路径复制下来点击Copy full Xpath

使用selenium+lxml中的etree进行配合使用,使用etree解析html网页

import requests
from lxml import etree
import time
import socket
import csv
from selenium import webdriver
from configparser import ConfigParser
from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions
#禁止图片和css加载
chrome_options = webdriver.ChromeOptions()
prefs = {"profile.managed_default_content_settings.images": 2}
chrome_options.add_experimental_option("prefs", prefs)
option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
# 如果想加载图片,就把下面第二句话改第一句话,删掉上面的“禁止图片和css加载”部分
# wb = Chrome(options=option)
wb=webdriver.Chrome(options=chrome_options)
#最大化窗口、输入网址、等待至网页加载完成(防止元素还没加载出来就开始爬了这样自然爬不到数据。如果一直加载不出就等10秒,加载好了就立刻结束等待)
wb.maximize_window()
wb.get("https://www.tianyancha.com/")
wb.implicitly_wait(5)

然后获取网页数据,这里表明哪怕后面出错了,仍然可以延续wb的位置继续控制浏览器

data = wb.page_source
time.sleep(3)
data = wb.page_source
time.sleep(3)
page_all.append(data)
html = etree.HTML(data)
company = html.xpath('/html/body/div/div/div[2]/div/div[1]/div[1]/div[3]/div[1]/div[1]/div[1]/h1/text()')
print(company )

方法二:使用@制定标签属性,搜索指定位置

这样的好处就是,对于批量处理的网页,有的标签位置不在同一个地方,那么我们就是不使用全Xpath路径,而使用相对路径,用@制定某种属性的标签,下载相关数据

"//div[@class='mainArea']/ul/li"

使用//div[@class=‘mainArea’]的意思是:从根部(//)查找 class值为 mainArea的Node.

所以,那么就很简单了 //某元素[@class=‘CLASS值’]

大家可以按照这个公式来查找 class的元素了。

剩下的 /ul/li 表示的是,继续查找 class='mainArea’的div包括的ul元素下面的li 节点集合。

到此这篇关于Python爬虫Xpath定位数据的方法的文章就介绍到这了,更多相关Python爬虫Xpath定位数据内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python selenium xpath定位操作

    xpath是一种在xm文档中定位的语言,详细简介,请自行参照百度百科,本文主要总结一下xpath的使用方法,个人看法,如有不足和错误,敬请指出. 注意:xpath的定位 同一级别的多个标签 索引从1开始 而不是0 1. 绝对定位: 此方法最为简单,具体格式为 xxx.find_element_by_xpath("绝对路径") 具体例子: xxx.find_element_by_xpath("/html/body/div[x]/form/input") x 代表第x个

  • python定位xpath 节点位置的方法

    chrome 右键有copy xpath地址 但是有些时候获取的可能不对 可以自己用代码验证一下 如果还是不行 可以考虑从源码当中取出来 趁热打铁,使用前一篇文章中 XPath 节点来定位HTML 页面. HTML文件如下(您可以将其拷贝,保存成html文件,跟我笔者实验): <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title

  • Python自动化之定位方法大杀器xpath

    一.xpath:基本属性定位 上一篇文章讲了通过元素的id.name.class这些属性定位的用户,使用xpath方法结合元素属性也可以很准确的定位元素,如下图 于是可以用以下xpath方法定位 二.xpath:其他属性定位 在实际工作过程中,往往会遇到一个元素id.name.class属性都没有,这时候也可以通过其它属性定位到 三.xpath:标签定位 在实际工作中,还会遇到一种情况就是相同属性具有同一个名字,这时就需要通过标签筛选,定位更准一点 如果不想制定标签名称,可以用*号表示任意标签

  • 关于python中的xpath解析定位

    爬取的网站:http://jbk.39.net/chancegz/ 这里只针对个别属性值: #例如:'别名'下的span标签文本,'发病部位'下的span标签文本以及'挂号科室'下的span标签文本 # def disease(url): text = get_html(url) tree = etree.HTML(text) bm = tree.xpath('//ul[@class="information_ul"]/li/i[text()="别名:"]/foll

  • Python爬虫Xpath定位数据的两种方法

    方法一:直接右键,将文章路径复制下来点击Copy full Xpath 使用selenium+lxml中的etree进行配合使用,使用etree解析html网页 import requests from lxml import etree import time import socket import csv from selenium import webdriver from configparser import ConfigParser from selenium.webdriver

  • python向json中追加数据的两种方法总结

    目录 前言 1. list dump (不推荐) 2. json update (推荐使用) 总结 前言 json以其轻量级的数据交换格式,且易于阅读和编写而使用率很广泛,而使用json的过程中时而需要增加字段,本人验证两种方式之后将其集成梳理. 具体操作详情如下: 1. list dump (不推荐) 采用list方式,向json中添加字段.此法存在一定的问题,不推荐使用. 方法如下: (1)先创建一个列表: json_content = [] (2)将当前json文件中已有的内容读入列表中:

  • python 获取剪切板内容的两种方法

    第一种 # -*- coding: utf-8 -*- # @Time : 2020/3/16 21:26 # @File : get_text_from_cupboard_13.py # @Author: Hero Liu # python读取剪切板内容 import win32clipboard as w import win32con def get_text(): w.OpenClipboard() d = w.GetClipboardData(win32con.CF_TEXT) w.C

  • 使用Python将图片转正方形的两种方法实例代码详解

    一.将原图粘贴到一张正方形的背景上 def trans_square(image): r"""Open the image using PIL.""" image = image.convert('RGB') w, h = image.size background = Image.new('RGB', size=(max(w, h), max(w, h)), color=(127, 127, 127)) # 创建背景图,颜色值为127 leng

  • python 实现ping测试延迟的两种方法

    一.python实现ping返回延迟繁琐版 #!/usr/bin/python3.7 # !coding:utf-8 __author__ = 'hsz' __date__ = 'Thu Feb 27 22:41:15 EST 2020' import time import struct import socket import select import sys def chesksum(data): """ 校验 """ n = len(d

  • 使用 Apache Superset 可视化 ClickHouse 数据的两种方法

    Apache Superset是一个强大的BI工具,它提供了查看和探索数据的方法.它在 ClickHouse 用户中也越来越受欢迎. 我们将介绍安装 Superset 的 2 种方法,然后展示如何从 Superset 连接到您的第一个 ClickHouse 数据库.代码示例基于 Ubuntu 18.04.Superset 1.1.0 和 clickhouse-sqlalchemy 0.1.6. 方法一:Python虚拟环境 第一种方法直接在您的主机上安装 Superset.我们将首先创建一个 P

  • python文件读取read及readlines两种方法使用详解

    目录 引言 .read([size])方法 .readlines()方法 引言 with open() as 和open()都是打开,还没有读入文件 假设test.fa的内容如下图所示: ACGACGTAGCGTAGCTACGATCAGCGACGAGCTAGCGACGA .read([size])方法 read([size])方法从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止,它返回字符串对象. with open('test.fa') as fa: f = fa

  • 使用Java构造和解析Json数据的两种方法(详解二)

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包. 在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Json数据的方法

  • 使用Java构造和解析Json数据的两种方法(详解一)

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包. 在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Json数据的方法

  • PHP实现更新中间关联表数据的两种方法

    本文以示例形式展示了PHP实现更新中间关联表数据的两种方法.分享给大家供大家参考之用.具体方法如下: 首先,中间关联表:这里的中间表只存表1的主键和表2的主键,即多对多的形式. 执行数据添加和删除为框架内部方法,不属于思路部分. 方法一:先全部删除旧数据,后添加新数据 $res = $this->classes->classEdit($id, $data); //修改主表数据 if($res) { //先删除关联表数据 $bool = $this->lesson_classes->

随机推荐