用正则表达式爬取京东图书销量榜(https://book.jd.com/booktop/0-0-0.html)上所有图书的以下信息: (1) 书名——bookName (2) 作者——author (3) 定价——definePrice (4) 折扣——discount (5) 售价——sellPrice
时间: 2023-11-13 08:05:17 浏览: 78
Python如何使用正则表达式爬取京东商品信息
好的,这个问题可以分为两部分,第一部分是如何爬取京东图书销量榜上的所有图书链接,第二部分是如何在每个图书链接中提取出书名、作者、定价、折扣和售价等信息。
对于第一部分,我们可以使用 requests 库和 BeautifulSoup 库来实现。具体步骤如下:
1. 使用 requests 库发送 GET 请求,获取京东图书销量榜的 HTML 页面。
2. 使用 BeautifulSoup 库解析 HTML 页面,找到所有的图书链接。根据网页结构,我们可以发现图书链接都在 class 为“p-name”的 div 元素下的 a 元素中,因此可以使用 find_all 方法找到所有的 class 为“p-name”的 div 元素,再通过遍历每个 div 元素来获取 a 元素中的链接。
以下是代码示例:
```python
import requests
from bs4 import BeautifulSoup
url = 'https://book.jd.com/booktop/0-0-0.html'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
book_links = []
for div in soup.find_all('div', class_='p-name'):
a = div.find('a')
book_links.append('https:' + a['href'])
print(book_links)
```
对于第二部分,我们需要对每个图书链接进行爬取,并提取出书名、作者、定价、折扣和售价等信息。具体步骤如下:
1. 对于每个图书链接,我们可以使用 requests 库再次发送 GET 请求,获取图书详情页的 HTML 页面。
2. 使用 BeautifulSoup 库解析 HTML 页面,找到书名、作者、定价、折扣和售价等信息所在的元素,并提取相应的文本信息。
以下是代码示例:
```python
for link in book_links:
response = requests.get(link)
soup = BeautifulSoup(response.text, 'html.parser')
bookName = soup.find('div', class_='sku-name').text.strip()
author = soup.find('div', class_='p-author').a.text.strip()
definePrice = soup.find('span', class_='p-price').text.strip()
discount = soup.find('div', class_='dd').span.text.strip()
sellPrice = soup.find('span', class_='price').text.strip()
print('书名:', bookName)
print('作者:', author)
print('定价:', definePrice)
print('折扣:', discount)
print('售价:', sellPrice)
```
综合起来,完整代码示例如下:
阅读全文