1、爬虫基本操作,爬取网页信息
这边我是用自己的博客做示例
import requests
from bs4 import BeautifulSoupurl= "https://blog.csdn.net/qq_37504771" #这个链接是在下的个人博客
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'
}
'''获取网页内容'''
# 构造一个向服务器请求的对象 r是包含服务器资源的response返回对象
r = requests.get(url, headers = headers) #使用requests伪装成浏览器访问print(r.text) #打印出网站的源码
'''获取响应内容'''
print("文本编码: ",r.encoding)
print("响应状态吗: ",r.status_code)
print("字符串方式响应体: \n",r.text)
'''提取数据'''
#使用BeautifulSoup解析
soup = BeautifulSoup(r.text,"lxml") #调用BeautifulSoup方法解析这个页面
title = soup.find("h4",class_="text-truncate").a.text.strip() #soup解析找到第一篇文章的标题
print(title)
'''存储数据'''
with open('title.txt','a+') as f: #存储文件
f.write(title)
f.close()
静态网站抓取
下面我们用豆瓣电影网来举个例子
import requestsfrom bs4 import BeautifulSoup
def get_movies():
#网站的请求头
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36',
'Host':'movie.douban.com' #这个就是网站地址
}
movie_list = []
'''抓取10个电影'''
for i in range(0,10):
url = 'https://movie.douban.com/top250?start='+str(i*25) #豆瓣上一个页面显示25个电影信息
r = requests.get(url, headers = headers, timeout=10) #获取响应
print(str(i+1),"页响应状态码: ",r.status_code)
soup = BeautifulSoup(r.text,"lxml")
div_list = soup.find_all('div',class_='hd') #调用soup找到所有的标题
for each in div_list:
movie = each.a.span.text.strip() #获取每段代码的文本
movie_list.append(movie) #添加到电影列表里面
return movie_list
movies = get_movies()
print (movies)