BeautifulSoup和re爬取豆瓣读书榜

本来想只用BeautifulSoup做的,但是做到网页解析的时候,发现bs4实在是太难操作了,有些节点根本没法选择,无奈只好选择了re,就是re速度很慢。但还是做出来了。

爬去思路是先在url='https://book.douban.com/latest?icn=index-latestbook-all/'上提取每本书的subUrl,然后在用一个each_parse函数解析出书名、作者、出版日期、页数。

以下是源代码:

#write reArticle in CSDN
#文件存储、MongoDB、MySQL


#获取网页源码
import requests
import re
from bs4 import BeautifulSoup
import time



def get_url():
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64)'  # 'host':'www.toutiao.com'
    }
    url = 'https://book.douban.com/latest?icn=index-latestbook-all/'
    response = requests.get(url=url, headers=headers)
    html = response.text
    list_url=[]
    soup=BeautifulSoup(html,'lxml')
    for items in soup.select('.detail-frame'):
        name=items.select('a')
        for n in name:
            list_url.append(BeautifulSoup(str(n),'lxml').a.attrs['href'])
    return list_url



def each_parse(url_list_all):
    for listOne in url_list_all:
        req = requests.get(listOne)
        book_parent = re.compile('<div.*?dale_book_subject_top_icon.*?property.*?>(.*?)</span>', re.S)
        book_result = re.findall(book_parent, req.text)

        author_parent = re.compile('<span.*? 作者.*?href.*?>(.*?)</a>', re.S)
        author_result = re.findall(author_parent, req.text)

        year_parent = re.compile('<div.*?出版年:.*?</span>(.*?)<br/>', re.S)
        year_result = re.findall(year_parent, req.text)

        page_parent = re.compile('<div.*?页数:.*?</span>(.*?)<br/>', re.S)
        page_result = re.findall(page_parent, req.text)

        print('书名:{0}\n作者:{1}\n出版年:{2}\n页数:{3}\n'.format(str(book_result),str(author_result),str(year_result),str(page_result)))



if __name__=='__main__':
    print("The programe is running!")
    start=time.time()
    list_urlX=get_url()
    each_parse(list_urlX)
    end=time.time()
    print("The need of time is %f s" % (end-start))






效果图如下:

书名:['过剩之地']
作者:['[美]莫妮卡·普拉萨德']
出版年:[' 2019-1-1']
页数:[' 436']

书名:['HBO的内容战略']
作者:['(美) 小比尔•梅西(Bill Mesce, Jr.)']
出版年:[' 2019-1']
页数:[' 332']

书名:['文明']
作者:['[英] 肯尼斯·克拉克']
出版年:[' 2019-1']
页数:[' 426']

书名:['念楼学短']
作者:['锺叔河']
出版年:[' 2019-1']
页数:[' 1216']

书名:['场景']
作者:['【加】丹尼尔•亚伦•西尔']
出版年:[' 2019-1']
页数:[' 492']

书名:['一个观点,不一定对']
作者:['黄章晋']
出版年:[' 2019-1-15']
页数:[' 260']

书名:['因计算机而强大']
作者:['[美]西摩 佩珀特 Seymour Papert', '展开']
出版年:[' 2019-1']
页数:[' 304']

书名:['汪曾祺全集(全十二卷)']
作者:['汪曾祺']
出版年:[' 2019-1-10']
页数:[' 4886']

还没有学多线程爬虫,但估计用re也快不到那里去,四十多本书爬了55秒。

  2019.2.26

猜你喜欢

转载自blog.csdn.net/qq_41375702/article/details/87950334
今日推荐