爬虫基础_02——BeautifulSoup

今天主要是利用BeautifulSoup爬一下糗百 http://www.qiushibaike.com/
包括:作者,年龄,段子内容,好笑数,评论数
主要思想:利用BeautifulSoup获取网页中的数据,然后存到本地的csv
下面了解一下BeautifulSoup的用法
首先必须要导入 bs4 库
BeautifulSoup 的用法
下面是具体代码:

import requests
from bs4 import BeautifulSoup
import csv


user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
header = {'User-Agent': user_agent}


html = requests.get('http://www.qiushibaike.com', headers = header).content
soup = BeautifulSoup(html, 'lxml')
# 获取要爬取的部分
divs = soup.select('.article.block.untagged.mb15')

authors = soup.select('div > a > h2')


if soup.select('div.author.clearfix > div'):
    ages = soup.select('div.author.clearfix > div')
else:
    ages = '不知道'
contents = soup.select('a > div.content > span')
laughs = soup.select('div.stats > span > i')
comments = soup.select('div.stats > span > a > i')
#新建一个列表,把获取的数据存到这个列表;
a = []
for author, age, content, laugh, comment in zip(authors, ages, contents, laughs, comments):
    data = {
        'author': author.get_text(),

        'age': age.get_text(),
        'content': content.get_text(),
        'laugh': laugh.get_text(),
        'comment': comment.get_text()
    }
    a.append(data)
#把列表的数据存到本地的csv文件;
csv_name = ['author', 'age', 'content', 'laugh', 'comment']
with open('qiubai.csv', 'w', newline = '',encoding='utf-8')as csvfile:
    write = csv.DictWriter(csvfile, fieldnames = csv_name)
    write.writeheader()
    write.writerows(a)
    csvfile.close()

结果:

爬虫基础_02——BeautifulSoup_第1张图片
糗百 .png

小结:
1、利用BeautifulSoup爬取数据,感觉比之前的正则方便多了,其实后面还有更方便的方法,请跳到下一篇查看爬虫基础_03——xpath;
2、这里存储数据是用的csv文件,但是如果数据太多的话,这个方法就有局限性了,后面还会介绍一下其他的存储方法;

你可能感兴趣的:(爬虫基础_02——BeautifulSoup)