Python爬虫学习笔记 1-2:初识Python爬虫

Published On 2019/08/11 Sunday, Singapore

本节以爬取小王子的豆瓣短评为例,从以下三个方面来初步了解爬虫: 1 数据获取 2 网页解析 3 数据保存

本文为Datacatsle Python爬虫(入门+进阶)课程学习笔记。



数据获取

网页爬取的第一步是获取数据(网页源代码),常用的爬虫库包含: urllib库和requests库。urllib库为python自带库,而request库为第三方库。以下分别给出使用两个库爬取豆瓣短评的例子。

urllib库

#导入urllib.request
import urllib.request

#打开网址,返回一个类文件对象
url = 'https://book.douban.com/subject/1084336/comments/'
f = urllib.request.urlopen(url)

#f.read()得到的格式为byte,因此修改编码为utf-8使其为string
#保存到result 
result = f.read().decode('utf-8')

requests库有以下两种用法:

请求返回的结果为response,response对象的属性

#导入requests库
import requests     

#使用requests.get方法获取网页信息
url = 'https://book.douban.com/subject/1084336/comments/'
f= requests.get(url)
# 检查返回结果编码方式,发现其为'utf8'
print(f.text.encoding)

#  保存到result 
result = f.text     



网页解析

在通过 urllib/requests 获取到网页源代码以后,我们需要对网页进行解析以获取到需要的数据。 常用的解析方法包括:

from lxml import etree
s = etree.HTML(r)
file = s.xpath('//div[@class="comment"]/p/span/text()')



数据保存

import requests
from lxml import etree

url = 'https://book.douban.com/subject/1084336/comments/'
r = requests.get(url).text

s = etree.HTML(r)
file = s.xpath('//div[@class="comment"]/p/span/text()')

with open('pinglun.txt', 'w', encoding='utf-8') as f: #使用with open()新建对象f
   for i in file:
       print(i)
       f.write(i) #写入数据,文件保存在当前工作目录

可以使用以下方法得到当前工作目录或者修改当前工作目录

import os
os.getcwd()#得到当前工作目录
os.chdir()#修改当前工作目录,括号中传入工作目录的路径

Pandas

df.to_excel('data.xlsx') 
df.to_csv('data.csv') #保存中文时要更改编码格式:encoding='gbk',或者其他格式



完整案例

# 导入requests  
import requests   

# 使用requests.get获取网页源码
r = requests.get('https://book.douban.com/subject/1084336/comments/').text

#导入bs4 
from bs4 import BeautifulSoup

#解析网页数据
soup = BeautifulSoup(r,'lxml')

#寻找数据 
pattern = soup.find_all('span','short')

#for循环打印
for item in pattern:
    print(item.string)

#导入pandas 
import pandas

# 新建list对象 
comments = []
for item in pattern:
    comments.append(item.string)    
df = pandas.DataFrame(comments)
# 使用to_csv写入
df.to_csv('comments.csv')





💚 Back to Home