Advertisement

爬取当当网图书信息

阅读量:

大体思路:
在列表页上获取的数据条数已经完整;尽管如此,在每一条单独的数据记录中仍缺少关键信息;因此,在获取每个列表页的数据时都需要先提取其对应的url;接着,在获取每个url后进行进一步的数据解析。

复制代码
    import requests
    import re
    from bs4 import BeautifulSoup
    import pandas as pd
    
    n=0
    name_list=[]
    price_list=[]
    r = requests.get("http://search.dangdang.com/?key=python&act=input")
    html = r.text
    book_url = re.findall('href="(.*?/\d{8}.html)"',html)
    #在列表页爬取单条数据的url链接
    for book in book_url: #遍历爬过来的url
    n=n+1
    if n%2 ==0:  #因为自取url会重复一次,故跳过一次重复的url
        R = requests.get(book)
        htm = R.text
        soup = BeautifulSoup(htm,'html.parser')
        h1 = soup.find('h1') #查找出书名
        name_list.append(soup.h1['title'])
        p = soup.find_all(id=re.compile('dd-price')) #返回含id='dd-price'的标签
        price_list.append(p[1].contents[2].strip())
    else:
        continue
    
    df = pd.DataFrame([name_list,price_list]).T  #转化为DataFrame对象数据
    df = df.rename(columns={0:'book',1:'price'}) #加表头
    
    df.to_csv('pythonbook.csv',index=False) #数据存储

最终结果如下:

这里写图片描述

全部评论 (0)

还没有任何评论哟~