import requests from lxml import etree import os headers = { 'user-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0' } url = 'https://wallhaven.cc/search?q=id:2278&sorting=random&ref=fp' page_text = requests.get(url=url, headers=headers).text selector = etree.HTML(page_text) # 将网站中的html源码数据加载到tree里 # li_list = selector.xpath('//section[@class="thumb-listing-page"]/ul/li//@src') # 获取源码对应的图片列表 li_list = selector.xpath("//*[@id='thumbs']/section/ul/li//@src") print(li_list)
时间: 2023-12-21 13:04:34 浏览: 141
这段代码是一个简单的爬虫程序,使用requests库获取指定网站的HTML源码,然后使用lxml库的etree模块解析HTML源码,获取指定元素的值。
具体来说,这段代码的功能是:
1. 构造请求头headers,模拟浏览器访问;
2. 指定目标url,使用requests库发送GET请求获取页面的HTML源码;
3. 使用etree.HTML方法将HTML源码转换为Element对象;
4. 使用xpath方法获取id为2278的图片信息,将URL存储在li_list中;
5. 打印li_list,输出结果。
需要注意的是,这段代码并没有对爬取的数据进行处理或存储,只是将获取到的数据输出到控制台。如果您想要将数据存储到本地或进行其他处理,需要在代码中添加相应的操作。同时,爬取网站的数据可能涉及到法律问题,请确保您的操作符合相关法律法规。
相关问题
import requests from lxml import etree headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.57' } url='https://pic.netbian.com/' page_text= requests.get(url=url,headers=headers).text tree = etree.HTML(page_text) li_list=tree.xpath('//div[@class="slist"]/ul/li') for li in li_list: pic='https://pic.netbian.com'+li.xpath('./a/img/@src')[0] name=li.xpath('./a/img@alt')[0]+'.jpg' print(pic,name)
这段代码是一个Python程序,它使用requests和lxml库来从网站https://pic.netbian.com/获取数据,并使用XPath从HTML页面中提取图像的URL和名称。这里的问题在于,XPath表达式'.//a/img@alt'中缺少'/',正确的表达式应该是'./a/img/@alt'。这个错误可能导致名称提取失败。
解决一下以下代码报错的import requests from lxml import etree url = 'https://www.shanghairanking.cn/institution' headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' } res = requests.get(url=url,headers=headers) print(res.status_code) html = etree.HTML(res.text) lis = html.xpath("//*[@id="__layout"]/div/div[2]/div[2]/div[1]") print(len(lis))
这段代码有一个小错误,就是在xpath的语句中双引号没有转义,需要改成单引号。修改后的代码如下:
```python
import requests
from lxml import etree
url = 'https://www.shanghairanking.cn/institution'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}
res = requests.get(url=url, headers=headers)
print(res.status_code)
html = etree.HTML(res.text)
lis = html.xpath('//*[@id="__layout"]/div/div[2]/div[2]/div[1]')
print(len(lis))
```
这样就可以正确运行了,输出页面中指定元素的数量。
阅读全文