代码解释:selector.xpath("/html/body/div[3]/div[2]/div/div/ul//@href")
时间: 2023-09-29 10:07:03 浏览: 66
这段代码使用XPath语法从HTML文档中选取所有ul标签下的href属性。
具体解释:
- "/":表示选取根节点;
- "html":表示选取所有的html元素;
- "/body":表示选取html元素下的body元素;
- "/div[3]":表示选取第3个div元素,从1开始计数;
- "/div[2]":表示选取选取第2个div元素,从1开始计数;
- "/div":表示选取选取所有的div元素;
- "/ul":表示选取选取所有的ul元素;
- "//":表示选取符合条件的元素,不考虑它们在文档中的位置;
- "@href":表示选取元素的href属性。
综上所述,这段代码的作用是从HTML文档中选取所有ul标签下的href属性。
相关问题
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个代码有什么规律
这四个代码均使用了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)
# 将图片的二进制数据写入文件
```
需要注意的是,这段代码针对特定的网页链接进行了编写,如果链接发生变化或者对应的图片不存在,程序将无法正常运行。另外,在使用爬虫程序时需要注意遵守相关法律法规和网站的使用协议,以免引发不必要的法律风险。
阅读全文