title=li.css('.title::attr(title)').get()
时间: 2024-06-05 19:11:45 浏览: 7
这是一个使用 Python 的 Scrapy 框架中 Selector 对象的语法。该代码使用了 CSS 选择器,从一个网页中提取出 class 名为 title 的元素的 title 属性值。具体来说,li 表示要提取的元素是 li 标签,.title 表示该元素的 class 属性为 title,::attr(title) 表示提取该元素的 title 属性值。
相关问题
import requests import parsel import csv f = open('射击.csv', mode='w', encoding='utf-8-sig', newline='') csv_writer = csv.DictWriter(f, fieldnames=['游戏名字', '游戏地址']) csv_writer.writeheader() for page in range(1, 300): url = 'https://www.4399.com/flash_fl/4_1.htm'.format(page) headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36' } response = requests.get(url=url, headers=headers) response.encoding = response.apparent_encoding selector = parsel.Selector(response.text) lis = selector.css('#classic li') for li in lis: dit ={} data_url = li.css('a::attr(href)').get() new_url = 'http://www.4399.com' + data_url.replace('http://','/') dit['游戏地址'] = new_url title = li.css('img::attr(alt)').get() dit['游戏名字'] = title print(title, new_url) csv_writer.writerow(dit)怎么改成用xpath的
你可以将 `selector = parsel.Selector(response.text)` 改为 `selector = etree.HTML(response.text)`,然后使用 XPath 语法来解析 HTML 页面,下面是修改后的代码:
```
import requests
from lxml import etree
import csv
f = open('射击.csv', mode='w', encoding='utf-8-sig', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['游戏名字', '游戏地址'])
csv_writer.writeheader()
for page in range(1, 300):
url = 'https://www.4399.com/flash_fl/4_1.htm'.format(page)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
response.encoding = response.apparent_encoding
selector = etree.HTML(response.text)
lis = selector.xpath('//*[@id="classic"]/li')
for li in lis:
dit = {}
data_url = li.xpath('a/@href')[0]
new_url = 'http://www.4399.com' + data_url.replace('http://', '/')
dit['游戏地址'] = new_url
title = li.xpath('a/img/@alt')[0]
dit['游戏名字'] = title
print(title, new_url)
csv_writer.writerow(dit)
f.close()
```
这里使用 XPath 语法,将 `lis` 变量中的值直接改为 `li`,然后在内部使用 XPath 表达式来获取游戏地址和游戏名称。
分析这段python代码,import requests import parsel import csv import time f = open('book.csv', mode='a', encoding='utf-8-sig', newline='') csv_writer = csv.DictWriter(f, fieldnames=[ '标题', '推荐', '评价', '作者', '出版日期', '出版社', '原价', '售价', '折扣', '电子书价格', '详情页', ]) csv_writer.writeheader() for page in range(1,26): print(f"----------------------------正在爬取第{page}页数据--------------------------------") time.sleep(2.5) url = f"http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-{page}" 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' } response = requests.get(url=url, headers=headers) # print(response.text) selector = parsel.Selector(response.text) lis = selector.css('ul.bang_list li') for li in lis: title = li.css('.name a::attr(title)').get() href = li.css('.name a::attr(href)').get() comment = li.css('.star a::text').get() recommend = li.css('.tuijian::text').get() author = li.css('div:nth-child(5) a:nth-child(1)::attr(title)').get() date = li.css('div:nth-child(6) span::text').get() press = li.css('div:nth-child(6) a::text').get() price_n = li.css('div.price p:nth-child(1) span.price_n::text').get() price_r = li.css('div.price p:nth-child(1) span.price_r::text').get() price_s = li.css('div.price p:nth-child(1) span.price_s::text').get() ebook = li.css('.price_e .price_n::text').get() dit = { '标题': title, '推荐': comment, '评价': recommend, '作者': author, '出版日期': date, '出版社': press, '原价': price_r, '售价': price_n, '折扣': price_s, '电子书价格': ebook, '详情页': href, } csv_writer.writerow(dit)
这段代码实现了从当当网爬取畅销书的信息,并将信息保存到CSV文件中。代码主要分为以下几个部分:
1. 导入requests、parsel、csv和time四个模块。
2. 打开CSV文件,并设置编码和标题行。
3. 通过循环爬取前25页的畅销书信息,每一页有60本畅销书。
4. 构造请求URL和请求头,发送HTTP请求,获取响应。
5. 使用parsel解析响应,获取每本畅销书的信息。
6. 构造字典存储每本畅销书的信息,并使用csv.DictWriter将字典写入CSV文件。
7. 在每次循环结束后,暂停2.5秒,避免过于频繁的请求导致被网站封禁。
总体来说,这段代码实现了一个简单的网络爬虫,用于获取当当网畅销书的信息。需要注意的是,如果要将代码用于实际应用中,需要遵守相关法律法规,避免对网站造成不必要的影响。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)