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