美文网首页
爬取豆瓣图书TOP250的内容,并写入cvs文件

爬取豆瓣图书TOP250的内容,并写入cvs文件

作者: dongger | 来源:发表于2018-11-06 23:17 被阅读0次

爬取豆瓣图书TOP250的内容,并写入cvs文件

  • 简化一下,20行代码可以完成,为了美观和便于理解,加了几行,控制在了30行。
  • 体会:
    1、requests库和beautifulsoup库方便
    2、select比较实用
    3、豆瓣对爬虫比较友好,基本没有反爬限制,适当加上sleep即可
    4、写入文件cvs比较好用
  • 几个不足
    1、学习的时候是正则,实用的时候嫌麻烦改了select
    2、下步需要加headers,cookies。
    3、爬取结果放入数据库
    4、不规则页面的处理,确保不中断。
    5、多线程和异步。
import requests
from bs4 import BeautifulSoup
import time
urls=['https://book.douban.com/top250?start={}'.format(str(i)) for i in range(0,250,25)] #构建所有页面的列表
def get_oneurl(url):
    r=requests.get(url)
    soup=BeautifulSoup(r.text,'lxml')
    titles=soup.select("#content  div.pl2 >  a")
    artics=soup.select("#content   p.pl")
    scores=soup.select('#content   span.rating_nums')
    one_words=soup.select('#content   span.inq')
    for title,artic,score,one_word in zip(titles,artics,scores,one_words):
        a_1=title.text.strip().replace(' ','').replace('\n','')
        a_2=title.get("href")
        a_3=artic.get_text().split('/')[0]
        a_4=artic.get_text().split('/')[-3]
        a_5=artic.get_text().split('/')[-2]
        a_6=artic.get_text().split('/')[-1]
        a_7=score.get_text()
        a_8=one_word.get_text(),      
    with open('douban.csv','a',encoding='utf-8')as f:
            f.write('{},{},{},{},{},{},{},{},\n '.format(a_1,a_2,a_3,a_4,a_5,a_6,a_7,a_8))
#主程序运行,清楚原有文件内容并打印标题
with open('douban.csv','w',encoding='utf-8')as f:
    f.write("书名,链接,作者,出版社,日期,价格,评分,一句话点评 \n")
for url in urls:
    get_oneurl(url)
    print (url +'    ok')
    time.sleep(1) 

cvs文件用记事本另存为ansi编码后可直接用excel打开。

相关文章

网友评论

      本文标题:爬取豆瓣图书TOP250的内容,并写入cvs文件

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