使用xpath的方式爬取豆瓣图书250的书名,作者,出版社,作者国家,评分,评价人数,发行日期,书籍价格等信息
时间: 2024-04-26 14:21:17 浏览: 223
以下是一个使用 Python 和 lxml 库爬取豆瓣图书 Top250 的示例代码,可以获取书名,作者,出版社,作者国家,评分,评价人数,发行日期,书籍价格等信息。
```python
import requests
from lxml import etree
url = 'https://book.douban.com/top250'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
book_list = []
def get_book_info(url):
html = requests.get(url, headers=headers).text
selector = etree.HTML(html)
book_items = selector.xpath('//tr[@class="item"]')
for book_item in book_items:
book_info = {}
book_info['title'] = book_item.xpath('.//div[@class="pl2"]/a/text()')[0]
book_info['author'] = book_item.xpath('.//p[@class="pl"]/text()')[0]
book_info['publisher'] = book_item.xpath('.//p[@class="pl"]/text()')[1]
book_info['country'] = book_item.xpath('.//p[@class="pl"]/text()')[2]
book_info['score'] = book_item.xpath('.//span[@class="rating_nums"]/text()')[0]
book_info['votes'] = book_item.xpath('.//span[@class="pl"]/text()')[0].strip('()')
book_info['date'] = book_item.xpath('.//p[@class="pl"]/text()')[3]
book_info['price'] = book_item.xpath('.//p[@class="pl"]/text()')[4]
book_list.append(book_info)
for i in range(0, 250, 25):
get_book_info(url + '?start=' + str(i))
print(book_list)
```
该代码首先定义了目标网站的 URL 和请求头,然后通过 `requests.get()` 函数发送 GET 请求,获取网页 HTML 内容。接着,使用 `etree.HTML()` 函数将 HTML 内容转换成 XPath 对象,方便后续解析。
在解析过程中,首先使用 `xpath()` 方法找到所有的书籍条目,然后对每个条目分别使用 XPath 表达式解析出书名、作者、出版社、作者国家、评分、评价人数、发行日期、价格等信息,并存储到一个字典对象中,最后将所有的字典对象存储到一个列表中。
最后,通过循环调用 `get_book_info()` 函数,依次爬取每一页的书籍信息,并将结果存储到 `book_list` 列表中。
阅读全文