Xpath 表达式学习及例子

本文介绍了XPath表达式的使用,虽然其效率高于正则表达式但功能相对较弱,通常作为正则表达式的补充。举例说明了XPath如何提取文本和属性,并探讨了BeautifulSoup库在网页解析中的应用,包括数据获取和格式化输出。同时,文章还列举了多种网页元素查找方法,如通过ID、CSS选择器和XPath选择器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习scrapy的使用(二)

1.Xpath 表达式

效率高,但是功能没有正则表示式强大。一般选择正则表达式。不能解决就用正则表达式。
xpath表达式:
/ 逐层提取
/html/head/title
实例:
在这里插入图片描述

text() 提取标签下的文本
/html/head/title/text()
在这里插入图片描述
//标签名** 提取所有**的标签
//div
//标签名[@数学=‘属性值‘] 提取属性为XX的标签
@属性名 代表取某个属性
提取div中

标签的内容。//div[@class=“tools”]
针对用浏览器的获取某个属性值用get_attribute(‘src’)

2 BeautifulSoup

from bs4 imort BeautifulSoup as bs
import urllib.request
data=urllib.request.urlopen(网址).read().decode("utf8“,“ignore”)
bs1=bs(data)

格式化输出,
bs1.prettify()
获取标签:bs对象.标签名
bs1.title
#获取
在这里插入图片描述

在这里插入图片描述

3.例子

在这里插入图片描述
在这里插入图片描述

from selenium import  webdriver
import time


chromedriver ="C:\\Users\\陈亚豪\\AppData\\Local\\Google\\Chrome\\Application\\chromedriver.exe"
# browser = webdriver.Chrome()
browser = webdriver.Chrome(chromedriver)
browser.get("http://www.baidu.com")
browser.find_element_by_xpath('//*[@id="kw"]').clear()
browser.find_element_by_xpath('//*[@id="kw"]').send_keys("爬虫")
browser.find_element_by_xpath('//*[@id="su"]').click()
time.sleep(20)
browser.close()

这里我们通过三种不同的方式去获取响应的元素,第一种是通过id的方式,第二个中是CSS选择器,第三种是xpath选择器,结果都是相同的。
这里列举一下常用的查找元素方法:

find_element_by_name
find_element_by_id
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector

from selenium import webdriver
import time
chromedriver ="C:\\Users\\XX\\AppData\\Local\\Google\\Chrome\\Application\\chromedriver.exe"
driver = webdriver.Chrome(chromedriver)
driver.get("https://translate.google.cn/#view=home&op=translate&sl=zh-CN&tl=vi")

f=open("11.txt","r",encoding="utf8")
f1=open("fanyi.txt","a+",encoding="utf8")
ci=0
for word in f.readlines():
    word = word.strip()
    try:
        text_dummy = driver.find_element_by_class_name('tlid-source-text-input')
        text_dummy.clear()
        text_dummy.send_keys(word)
        time.sleep(2)
        text_translation = driver.find_element_by_xpath(
            '//span[@class="tlid-translation translation"]/span').text
        print("当前是第%s个词语当前词为%s"%(ci,word))
        f1.write(word+" "+text_translation+"\n")
        ci+=1
        f1.flush()
    except:
        print("error")
        continue
f.close()
f1.close()
driver.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值