print(selector.xpath("/html/body/div[2]/div[1]/ul/li[2]/a/text()")) print(selector.xpath("/html/body/div[2]/div[1]/ul/li[3]/a/text()")) print(selector.xpath("/html/body/div[2]/div[1]/ul/li[4]/a/text()")) print(selector.xpath("/html/body/div[2]/div[1]/ul/li[5]/a/text()"))请告诉我这4个代码有什么规律
时间: 2023-07-16 18:12:03 浏览: 121
这四个代码均使用了XPath语法,通过XPath路径获取HTML文档中特定元素的文本内容。其中,`/html/body/div[2]/div[1]/ul/li[2]/a/text()`表示获取HTML文档中第二个`li`元素下的`a`元素的文本内容,`/html/body/div[2]/div[1]/ul/li[3]/a/text()`表示获取HTML文档中第三个`li`元素下的`a`元素的文本内容,以此类推。它们的规律是通过XPath路径定位HTML文档中的特定元素,并获取其文本内容。
相关问题
import requests from lxml import etree import os url = 'https://wallhaven.cc/search?q=id:2278&sorting=random&ref=fp/' page = requests.get(url) print(page) page.encoding = "utf-8" selector = etree.HTML(page.text) # 将网站中的html源码数据加载到tree里 print(selector) li_list = selector.xpath('//section[@class="thumb-listing-page"]/ul/li//@data-src') # 获取源码对应的图片列表 # li_list = selector.xpath("//*[@id='thumbs']/section/ul/li//@data-src") # li_list = selector.xpath("/html/body/main/div[1]/section/ul/li//@data-src") print(li_list) for ur in li_list: page = requests.get(ur) file_name = ur[35:42] + '.jpg' print(ur) print(file_name) with open(f'竖图/{file_name}', 'wb') as f: f.write(page.content)
这段代码是一个简单的 Python 爬虫程序,用于抓取 Wallhaven 网站上特定图片 ID 的随机图片,并将其保存到本地文件夹中。以下是每行代码的注释:
```
import requests
# 导入 requests 库,用于向网站发送请求
from lxml import etree
# 导入 etree 模块,用于解析 HTML
import os
# 导入 os 模块,用于创建文件夹和保存图片
url = 'https://wallhaven.cc/search?q=id:2278&sorting=random&ref=fp/'
# 定义变量 url,表示待抓取的网页链接
page = requests.get(url)
# 发送 GET 请求,获取网页的 HTML 源码
print(page)
# 打印请求的状态码,用于调试代码
page.encoding = "utf-8"
# 将网页的编码设置为 utf-8
selector = etree.HTML(page.text)
# 将网站中的 HTML 源码数据加载到 tree 里
print(selector)
# 打印 tree 对象,用于调试代码
li_list = selector.xpath('//section[@class="thumb-listing-page"]/ul/li//@data-src')
# 获取源码对应的图片列表,该列表中的元素是图片的链接地址
print(li_list)
# 打印图片链接列表,用于调试代码
for ur in li_list:
# 遍历图片链接列表中的每个链接
page = requests.get(ur)
# 发送 GET 请求,获取图片的二进制数据
file_name = ur[35:42] + '.jpg'
# 构造文件名,包括图片的 ID 和扩展名
print(ur)
# 打印图片链接,用于调试代码
print(file_name)
# 打印文件名,用于调试代码
with open(f'竖图/{file_name}', 'wb') as f:
# 打开文件,'wb' 表示以二进制写入模式打开文件
f.write(page.content)
# 将图片的二进制数据写入文件
```
需要注意的是,这段代码针对特定的网页链接进行了编写,如果链接发生变化或者对应的图片不存在,程序将无法正常运行。另外,在使用爬虫程序时需要注意遵守相关法律法规和网站的使用协议,以免引发不必要的法律风险。
python如何使用 Xpath 或者 CSS Selector 来定位元素
在 Python 中可以使用 lxml 库或者 Beautiful Soup 库来使用 Xpath 或者 CSS Selector 来定位元素。
1. 使用 lxml 库:
```python
from lxml import etree
# 构建 HTML 树
html = """
<html>
<body>
<div class="content">
<ul>
<li><a href="http://www.baidu.com">百度</a></li>
<li><a href="http://www.google.com">谷歌</a></li>
</ul>
</div>
</body>
</html>
"""
tree = etree.HTML(html)
# 使用 Xpath 定位元素
result = tree.xpath('//div[@class="content"]/ul/li/a/text()')
print(result) # ['百度', '谷歌']
# 使用 CSS Selector 定位元素
result = tree.cssselect('div.content ul li a')
for item in result:
print(item.text) # 百度 谷歌
```
2. 使用 Beautiful Soup 库:
```python
from bs4 import BeautifulSoup
# 构建 HTML 树
html = """
<html>
<body>
<div class="content">
<ul>
<li><a href="http://www.baidu.com">百度</a></li>
<li><a href="http://www.google.com">谷歌</a></li>
</ul>
</div>
</body>
</html>
"""
soup = BeautifulSoup(html, 'lxml')
# 使用 CSS Selector 定位元素
result = soup.select('div.content ul li a')
for item in result:
print(item.text) # 百度 谷歌
# 使用 Xpath 定位元素
# 需要安装 lxml 库
tree = etree.HTML(str(soup))
result = tree.xpath('//div[@class="content"]/ul/li/a/text()')
print(result) # ['百度', '谷歌']
```
阅读全文