返回顶部
首页 > 资讯 > 后端开发 > Python >Python中怎么定位元素
  • 226
分享到

Python中怎么定位元素

2023-06-15 17:06:23 226人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

本篇文章为大家展示了python中怎么定位元素,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。确定网站没有设置反爬措施,是否能直接返回待解析的内容:import requests 

本篇文章为大家展示了python中怎么定位元素,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

确定网站没有设置反爬措施,是否能直接返回待解析的内容:

import requests  url = 'Http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-1' response = requests.get(url).text print(response)

Python中怎么定位元素

仔细检查后发现需要的数据都在返回内容中,说明不需要特别考虑反爬举措

审查网页元素后可以发现,书目信息都包含在 li 中,从属于 class 为 bang_list clearfix bang_list_mode 的 ul  中

Python中怎么定位元素

进一步审查也可以发现书名在的相应位置,这是多种解析方法的重要基础

Python中怎么定位元素

1. 传统 BeautifulSoup 操作

经典的 BeautifulSoup 方法借助 from bs4 import  BeautifulSoup,然后通过 soup = BeautifulSoup(html, "lxml") 将文本转换为特定规范的结构,利用 find  系列方法进行解析,代码如下:

import requests from bs4 import BeautifulSoup  url = 'http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-1' response = requests.get(url).text  def bs_for_parse(response):     soup = BeautifulSoup(response, "lxml")     li_list = soup.find('ul', class_='bang_list clearfix bang_list_mode').find_all('li') # 定ul后获取20个li     for li in li_list:         title = li.find('div', class_='name').find('a')['title'] # 逐个解析获取书名         print(title)  if __name__ == '__main__':     bs_for_parse(response)

Python中怎么定位元素

成功获取了 20 个书名,有些书面显得冗长可以通过正则或者其他字符串方法处理,本文不作详细介绍

2. 基于 BeautifulSoup 的 CSS 选择器

这种方法实际上就是 PyQuery 中 CSS 选择器在其他模块的迁移使用,用法是类似的。关于  CSS 选择器详细语法可以参考:http://www.w3school.com.cn/cssref/css_selectors.asp由于是基于  BeautifulSoup 所以导入的模块以及文本结构转换都是一致的:

import requests from bs4 import BeautifulSoup  url = 'http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-1' response = requests.get(url).text          def css_for_parse(response):     soup = BeautifulSoup(response, "lxml")      print(soup)  if __name__ == '__main__':     css_for_parse(response)

然后就是通过 soup.select 辅以特定的 CSS 语法获取特定内容,基础依旧是对元素的认真审查分析:

import requests from bs4 import BeautifulSoup from lxml import html  url = 'http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-1' response = requests.get(url).text          def css_for_parse(response):     soup = BeautifulSoup(response, "lxml")     li_list = soup.select('ul.bang_list.clearfix.bang_list_mode > li')     for li in li_list:         title = li.select('div.name > a')[0]['title']         print(title)  if __name__ == '__main__':     css_for_parse(response)

3. XPath

XPath 即为 XML 路径语言,它是一种用来确定 XML 文档中某部分位置的计算机语言,如果使用 Chrome 浏览器建议安装  XPath Helper 插件,会大大提高写 XPath 的效率。

之前的爬虫文章基本都是基于 XPath,大家相对比较熟悉因此代码直接给出:

import requests from lxml import html  url = 'http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-1' response = requests.get(url).text  def xpath_for_parse(response):     selector = html.fromstring(response)     books = selector.xpath("//ul[@class='bang_list clearfix bang_list_mode']/li")     for book in books:         title = book.xpath('div[@class="name"]/a/@title')[0]         print(title)  if __name__ == '__main__':     xpath_for_parse(response)

正则表达式如果对 HTML  语言不熟悉,那么之前的几种解析方法都会比较吃力。这里也提供一种万能解析大法:正则表达式,只需要关注文本本身有什么特殊构造文法,即可用特定规则获取相应内容。依赖的模块是  re

首先重新观察直接返回的内容中,需要的文字前后有什么特殊:

import requests import re  url = 'http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-1' response = requests.get(url).text print(response)

Python中怎么定位元素

Python中怎么定位元素

观察几个数目相信就有答案了:<div class="name"><a href="http://product.dangdang.com/xxxxxxxx.html" target="_blank"  title="xxxxxxx">

书名就藏在上面的字符串中,蕴含的网址链接中末尾的数字会随着书名而改变。

分析到这里正则表达式就可以写出来了:

import requests import re  url = 'http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-1' response = requests.get(url).text  def re_for_parse(response):     reg = '<div class="name"><a href="http://product.dangdang.com/\d+.html" target="_blank" title="(.*?)">'     for title in re.findall(reg, response):         print(title)  if __name__ == '__main__':     re_for_parse(response)

可以发现正则写法是最简单的,但是需要对于正则规则非常熟练。所谓正则大法好!

当然,不论哪种方法都有它所适用的场景,在真实操作中我们也需要在分析网页结构来判断如何高效的定位元素,最后附上本文介绍的四种方法的完整代码,大家可以自行操作一下来加深体会

import requests from bs4 import BeautifulSoup from lxml import html import re  url = 'http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-1' response = requests.get(url).text  def bs_for_parse(response):     soup = BeautifulSoup(response, "lxml")     li_list = soup.find('ul', class_='bang_list clearfix bang_list_mode').find_all('li')     for li in li_list:         title = li.find('div', class_='name').find('a')['title']         print(title)  def css_for_parse(response):     soup = BeautifulSoup(response, "lxml")     li_list = soup.select('ul.bang_list.clearfix.bang_list_mode > li')     for li in li_list:         title = li.select('div.name > a')[0]['title']         print(title)  def xpath_for_parse(response):     selector = html.fromstring(response)     books = selector.xpath("//ul[@class='bang_list clearfix bang_list_mode']/li")     for book in books:         title = book.xpath('div[@class="name"]/a/@title')[0]         print(title)  def re_for_parse(response):     reg = '<div class="name"><a href="http://product.dangdang.com/\d+.html" target="_blank" title="(.*?)">'     for title in re.findall(reg, response):         print(title)  if __name__ == '__main__':     # bs_for_parse(response)     # css_for_parse(response)     # xpath_for_parse(response)     re_for_parse(response)

上述内容就是Python中怎么定位元素,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网Python频道。

--结束END--

本文标题: Python中怎么定位元素

本文链接: https://lsjlt.com/news/281028.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python中怎么定位元素
    本篇文章为大家展示了Python中怎么定位元素,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。确定网站没有设置反爬措施,是否能直接返回待解析的内容:import requests ...
    99+
    2023-06-15
  • python---定位元素
    1.定位元素:以百度输入框和搜索为例子 (1)id定位 :id属性在html文档中是唯一的find_element_by_id()方法通过id属性定位元素(2)name定位find_element_by_name()方法(3)class定位...
    99+
    2023-01-31
    元素 python
  • python+selenium-元素定位
      最近在学习web自动化测试,web自动化测试中元素定位是基本功也是很重要的一环,常用的元素定位方式网上都有很多的,一般采用强大的xpath方式来定位,xpath中又包含了很多其他方法。当然,在学习元素定位之前,需要要对前端要有一定的了...
    99+
    2023-01-30
    元素 python selenium
  • JavaScript怎么定位元素
    本篇内容主要讲解“JavaScript怎么定位元素”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript怎么定位元素”吧! ...
    99+
    2024-04-02
  • python定位元素的方法
    python中实现定位元素的方法有以下几种通过id定位元素drive.find_element_by_id('id_value')通过name定位元素drive.find_element_by_name()通过tag_name定位元素dri...
    99+
    2024-04-02
  • python怎么自动化八大定位元素
    这篇文章主要介绍“python怎么自动化八大定位元素”,在日常操作中,相信很多人在python怎么自动化八大定位元素问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python怎么自动化八大定位元素”的疑惑有所...
    99+
    2023-06-20
  • HTML中怎么利用定位使元素居中
    小编给大家分享一下HTML中怎么利用定位使元素居中,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!html有什么特点1、简易性:超级文本标记语言版本升级采用超集方式,从而更加灵活方便,适合初学前端开发者使用。2、可扩展性:超...
    99+
    2023-06-08
  • selenium---元素定位(find_element)
    find_element属于定位元素的一种方法,包含了常用的定位方法。 在使用find——element 时 一定要导入相关的包,不然会报错 from selenium import webd...
    99+
    2023-08-30
    selenium python chrome
  • python怎么在列表指定位置添加元素
    在Python中,可以使用insert()方法在列表的指定位置添加元素。insert()方法接受两个参数,第一个参数是要插入元素的位...
    99+
    2023-10-18
    python
  • Python爬虫网页元素定位术
    目录实战场景基础用法如下所示BeautifulSoup 模块的对象说明BeautifulSoup 对象Tag 对象NavigableString 对象Comment 对象find()...
    99+
    2024-04-02
  • c++中vector怎么删除指定位置元素
    要删除vector中指定位置的元素,可以使用erase()方法。下面是一个示例代码: #include <iostream&g...
    99+
    2024-03-13
    c++
  • css中元素的定位方法
    css 元素定位有四种方法:静态、相对、绝对和固定定位。静态定位是默认值,元素不受定位规则影响。相对定位相对于元素本身移动元素,不会影响文档流。绝对定位将元素从文档流中移除并相对于其祖先...
    99+
    2024-04-26
    css 绝对定位 相对定位 静态定位 固定定位
  • Python selenium 八种定位元素的方式
    目录前言1:id定位2:name定位3:class_name定位4:tag_name定位5:link_text定位6:partial_link_text定位7:xpath定位8:cs...
    99+
    2024-04-02
  • 绝对定位元素与相对定位元素的区别与联系
    绝对定位元素与相对定位元素的区别与联系,需要具体代码示例 在HTML和CSS中,我们经常会使用绝对定位和相对定位来控制元素的位置和布局。绝对定位和相对定位是两种常见的定位方式,它们在实际应用中有着不同的特性和用途。本文将详细介绍...
    99+
    2024-01-23
    绝对定位:引用 移动和布局元素
  • 详解Selenium中元素定位方式
    目录八大元素定位方式通过元素 id 定位通过元素 name 定位通过元素 class name 定位通过 link text 与 partial link text 定位通过 css...
    99+
    2024-04-02
  • css中元素的定位方法是什么
    css 中元素定位方法有:正常流定位:元素保持在正常流中。相对定位:元素相对于其原始位置移动。浮动定位:元素从流中移除,但保持宽度。绝对定位:元素从流中移除,相对于已定位祖先元素定位。固...
    99+
    2024-04-26
    css 排列 绝对定位 固定定位
  • python怎么查找列表中元素的位置
    今天小编给大家分享一下python怎么查找列表中元素的位置的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。如何查找列表中元素的...
    99+
    2023-06-30
  • 详解Python自动化中这八大元素定位
    一、find_element_by_id() find_element_by_id() 1.从上面定位到的元素属性中,可以看到有个id属性:id=“kw”,这里可以通过它的id属性定...
    99+
    2024-04-02
  • HTML怎么对一个元素的位置进行定位
    本篇内容介绍了“HTML怎么对一个元素的位置进行定位”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! &l...
    99+
    2024-04-02
  • c++中怎么用set遍历指定位置的元素
    在C++中,可以使用迭代器来遍历 set 中的元素。要遍历指定位置的元素,可以使用 std::advance 函数来移动迭代器到指定...
    99+
    2024-03-04
    c++
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作