|
爬取豆瓣Top250图书数据
项目的实现步骤
1.项目结构
2.获取网页数据
3.提取网页中的关键信息
4.保存数据
1.项目结构
2.获取网页数据
对应的网址为https://book.douban.com/top250
- import requests
- from bs4 import BeautifulSoup
- """
- 获取网页数据,解析数据,将相应的数据传出
- """
- def get_page(url):
- headers = {
- 'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) '
- 'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 '
- 'Mobile Safari/537.36 Edg/114.0.1823.43'
- }
- resp=requests.get(url,headers=headers)
- soup=BeautifulSoup(resp.text,'html.parser')
- return soup
复制代码 3.提取网页中的关键信息
获取传出的解析后的数据,获取对应的图片,书名,作者,价格,评价,简介- from geturlcocument.get_document import get_page
- import re
- # 初始数据
- pictures=[]
- names=[]
- authors=[]
- prices=[]
- scores=[]
- sums=[]
- def get_single():
- # 网址地址
- urls = [f"https://book.douban.com/top250?start={num}" for num in range(0,250,25)]
- for url in urls:
- # 获取对应的网页文本
- text = get_page.get_page(url)
- # 所有数据的集合
- all_tr = text.find_all(name="tr", attrs={"class": "item"})
- # 查找每个单项
- for tr in all_tr:
- # 数据类型:图片,书名,作者,价格,评分,简介
- # 图片
- picture = tr.find(name="img")
- picture = picture.get('src')
- # print(picture)
- # 书名
- div = tr.find(name='div', attrs={'class': 'pl2'})
- name = div.find('a').text
- name = re.sub(r'\s+', '', name)
- # 作者
- author = tr.find(name='p', attrs={'class': 'pl'}).text
- author = author.split('/')[0]
- # 价格
- price = author.split('/')[-1]
- price = re.sub(r'元', '', price)
- # 评分
- score = tr.find(name='span', attrs={'class': 'rating_nums'}).text
- try:
- sum = tr.find(name='span', attrs={'class': 'inq'}).text
- except AttributeError:
- sum = ''
- pictures.append(picture)
- names.append(name)
- authors.append(author)
- prices.append(price)
- scores.append(score)
- sums.append(sum)
- data = {
- "picture": pictures,
- "name": names,
- "author": authors,
- "price": prices,
- "score": scores,
- "sum": sums
- }
- return data
复制代码 将获取的数据存入到字典中,将数据传出,使用re库对相应的数据进行处理,运用异常检错
4.保存数据
获取传出的字典类型的数据,将数据存入到pandas的DataFrame类型中- from geturlcocument.get_single_docuemnt import get_single
- import pandas as pd
- # 获取字典类型的数据
- data=get_single.get_single()
- # 用pandas的DataFrame类型存储数据
- df=pd.DataFrame(data)
- df.to_csv('./books.csv',encoding='utf-8')
- print('ending of data')
复制代码 该项目完成!!!
来源:https://www.cnblogs.com/prettyspider/p/17478232.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|