用python爬取https://book.douban.com/top250此网站上的内容,内容要求有书名、国籍、作者、出版社、出版时间、售价、评分、评价人数以及评论,评论只取第一条。并将爬取到的数据保存代csv文件中
时间: 2023-11-13 17:03:51 浏览: 172
好的,我可以帮您解决这个问题。首先,我们需要安装一些Python库来帮助我们完成这个任务。请在命令行中输入以下命令:
```
pip install requests beautifulsoup4 pandas
```
接下来,我们将编写Python代码来实现爬取和保存数据的操作。请将以下代码保存为 `douban_top250.py` 文件。
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 获取页面内容
def get_page(url):
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'}
response = requests.get(url, headers=headers)
html = response.text
return html
# 解析页面内容
def parse_page(html):
soup = BeautifulSoup(html, 'html.parser')
book_list = []
for book in soup.find_all('tr', class_='item'):
book_dict = {}
book_dict['书名'] = book.find('div', class_='pl2').a['title']
book_dict['作者'] = book.find('p', class_='pl').text.split('/')[0].strip()
book_dict['国籍'] = book.find('p', class_='pl').text.split('/')[1].strip()
book_dict['出版社'] = book.find('p', class_='pl').text.split('/')[-3].strip()
book_dict['出版时间'] = book.find('p', class_='pl').text.split('/')[-2].strip()
book_dict['售价'] = book.find('p', class_='pl').text.split('/')[-1].strip()
book_dict['评分'] = book.find('span', class_='rating_nums').text
book_dict['评价人数'] = book.find('span', class_='pl').text.strip('()')
book_dict['评论'] = book.find('span', class_='inq').text
book_list.append(book_dict)
return book_list
# 保存为csv文件
def save_to_csv(book_list):
df = pd.DataFrame(book_list)
df.to_csv('douban_top250.csv', index=False)
# 主函数
def main():
base_url = 'https://book.douban.com/top250'
book_list = []
for i in range(0, 250, 25):
url = base_url + '?start=' + str(i)
html = get_page(url)
book_list.extend(parse_page(html))
save_to_csv(book_list)
print('保存成功!')
if __name__ == '__main__':
main()
```
运行该脚本后,将会在当前目录下生成一个 `douban_top250.csv` 文件,其中包含了豆瓣图书Top250的书籍信息。
阅读全文