美文网首页
2019-06-28 bs4 爬豆瓣新书速递

2019-06-28 bs4 爬豆瓣新书速递

作者: 年画儿 | 来源:发表于2019-06-28 13:29 被阅读0次
import requests
from bs4 import BeautifulSoup
import pandas as pd

r = requests.get(url = 'https://book.douban.com/latest')

#查看状态
# print(r.encoding, r.status_code, r.encoding)
# print(r.url)

#查看页面内容
# print(r.text)

#解析网址
# soup = BeautifulSoup(r.text,'lxml')

#提取标签
# print(soup.head)

# print(soup.title)
# print(soup.a)  # 提取的第一个a标签


# 标签的类型是什么?
# print(type(soup.title))
# # print(type(soup.a))

#标签 属性 元素
# print(soup.a.name,type(soup.a.name))
# print(soup.a.attrs,type(soup.a.attrs))
# print(soup.a.text,type(soup.a.text))


# 如何查找标签? → find() /find_all()
# find() → 查找单个标签
# 如果标签属性唯一,则确定位置;不唯一情况下选取第一个

# find_all() → 查找所有标签

# urls = soup.find('div',class_="grid-12-12 clearfix").find_all('a')
# url_lst = []
#
# for url in urls[::2]:
#     url_lst.append(url['href'])
#     # 保存所有url
#
# print(len(url_lst))
# print(url_lst[:5])

# 创建函数,采集页面信息

def get_data(ui):
    ri = requests.get(url = ui)
    soupi = BeautifulSoup(ri.text,'lxml')
        # 访问页面 + 页面解析
    infors = soupi.find_all('div',class_="detail-frame")
    lst = []
    for i in infors:
        dic = {}
        dic['书名'] = i.find('h2').text.replace('\n','')
        dic['评分'] = i.find_all('p')[0].text.replace('\n','').replace(' ','')
        dic['其他信息'] = i.find_all('p')[1].text.replace('\n','').replace(' ','')
        dic['简介'] = i.find_all('p')[2].text.replace('\n','').replace(' ','')
        lst.append(dic)
    return lst
    # 函数构建完成

url = 'https://book.douban.com/latest'
result = get_data(url)
    # 调用函数采集数据


# 数据转换 - dataframe

df = pd.DataFrame(result)
#显示所有列
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)
#设置value的显示长度为100,默认为50
pd.set_option('max_colwidth',100)

print(df)

相关文章

网友评论

      本文标题:2019-06-28 bs4 爬豆瓣新书速递

      本文链接:https://www.haomeiwen.com/subject/szpscctx.html