爬取豆瓣图书Top250书籍信息

小白一个,接触Python一个多月了,自己感觉最有趣的莫过于利用Python进行网络爬虫,原来都是看着别人的博客把代码抄一遍,今天时间稍微多一些,自己写了一个小爬虫,从分析网页源代码开始,一步步对代码进行设计与完善,捣腾了一中午,终于算是成功了,心情还是蛮激动。下面把代码跟大家分享一下。

豆瓣图书Top250网址:https://book.douban.com/top250

爬取豆瓣图书Top250书籍信息_第1张图片

1、首先打开Google浏览器开发者模式(F12或者右键点击检查)

爬取豆瓣图书Top250书籍信息_第2张图片

2、浏览网页,发现250本图书一共分成了10页,利用开发者工具找到每一页的url

爬取豆瓣图书Top250书籍信息_第3张图片

利用Beautifulsoup跟requests获取每一页的url

import requests
import re
from bs4 import BeautifulSoup

content = requests.get('https://book.douban.com/top250').text
Soup = BeautifulSoup(content,'lxml')
all_url = Soup.find('div',class_='paginator').find_all('a')
list = []
for url in all_url:
    url = url['href']
    list.append(url)
use_url = ['https://book.douban.com/top250']
ext_url = list[0:-1]#舍弃最后一个url
use_url.extend(ext_url)#将两个列表合并

3、利用开发者工具查看网页格式

我只抓取了图书的链接、书名以及作者,通过开发者工具发现图书的信息都在table标签里面。

爬取豆瓣图书Top250书籍信息_第4张图片

通过正则表达式将信息提取出来

import requests
import re
from bs4 import BeautifulSoup

content = requests.get('https://book.douban.com/top250').text
Soup = BeautifulSoup(content,'lxml')
all_url = Soup.find('div',class_='paginator').find_all('a')
list = []
for url in all_url:
    url = url['href']
    list.append(url)
use_url = ['https://book.douban.com/top250']
ext_url = list[0:-1]#舍弃最后一个url
use_url.extend(ext_url)#将两个列表合并
for i in use_url:
    response = requests.get(i,'lxml')
    pattern = re.compile('(.*?)/.*?',re.S)
    results = re.findall(pattern,content)
    for result in results:
        href,name,author = result#分别对href、name、author进行赋值
        print(href,name,author.strip())

4、运行程序

爬取豆瓣图书Top250书籍信息_第5张图片

注:博主只是个小白,想通过博客记录一下自己学习Python的过程,代码可能有很多不完善的地方,希望能与大家多多交流学习。

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