爬取当当网图书信息

大体思路:
列表页数据条数完整,但单条数据信息不完整,所以先爬取列表页单条数据的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) #数据存储

最终结果如下:
爬取当当网图书信息_第1张图片

你可能感兴趣的:(python爬虫)