2021-03-18 爬虫(上)
1、编码规范
1.1 python第一行要输入
#-*-coding:utf-8-*-
#coding=utf-8
这样的话代码里就可以包含中文。
1.2 在python中使用函数实现单一功能/相关功能的代码段可以提高代码的可读性和重复率
1.3 python中可以加入main函数用于测试程序
def main():
print('hello')
if __name__=="__main__":#当程序执行时
#调用函数
main()
hello
这样子写的话可以让程序按照自己想要的顺序来,可以更清楚的管理代码的主流程。
2、引入模块
python用import来引入模块
import bs4#网页解析,获取数据
import re#正则表达式,进行文字匹配
import urllib.request,urllib.error#指定URL,获取网页数据
import xlwt#进行excel操作
import sqlite3#进行SQLite数据库操作
3、利用python对豆瓣啊读取数据
# -*- coding: utf-8 -*-
"""
Created on Thu Mar 18 17:30:27 2021
@author: wangyu
"""
import bs4
import re
import urllib.request,urllib.error
import xlwt
import sqlite3#进行SQLite数据库操作
def main():
baseurl='https://movie.douban.com/top250'
#1、爬取网页
datalist=getData(baseurl)
#savepath='.\\豆瓣电影top250.xls'#.表示当前位置,
#3、保存数据
#saveData=(savepath)
askURL('https://movie.douban.com/top250')
#爬取网页
def getData(baseurl):
datalist=[]
for i in range(0,10):#调用获取页面的信息10次
url=baseurl+str(i*25)
html=askURL(url) #保存获取到的网页源码
#2、逐一解析数据
return datalist
#得到一个指定url的网页内容
def askURL(url):
head={ #模拟浏览器头部信息,向豆瓣服务器发送消息
'User-Agent':' Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
#用户代理:表示告诉豆瓣服务器,本机是什么类型的机器、浏览器(本质上是告诉浏览器,本机可以接受什么水平的文件)
request =urllib.request.Request(url,headers=head)
html=''
try:
response=urllib.request.urlopen(request)
html=response.read().decode('utf-8')#对中文进行解码
print(html)
except urllib.error.URLError as e:
if hasattr(e,'code'):
print(e.code)
if hasattr(e,'reason'):
print(e.reason)
return html
#保存数据
def saveData(savepath):
print('save..')
if __name__ == "__main__": #当程序执行时
#调用函数
main()
4、beautifulsoup
目的是获取节点,最终目标是为了文档的搜索、遍历等等。
# -*- coding: utf-8 -*-
"""
Created on Thu Mar 18 20:43:46 2021
@author: wangyu
"""
from bs4 import BeautifulSoup
file=open("./baidu.html","rb")
html=file.read()
bs=BeautifulSoup(html,"html.parser")
print(bs.title)
tag:标签及其内容,默认只拿到第一个结果
comment是一种特殊的类型,输出的内容不包括注释符号
4.1文档的遍历
print(bs.head.contents)
print(bs.head.contents[1])#想知道某一个内容则用下标来访问