python爬虫学习

用到的库

from bs4 import BeautifulSoup #解析数据
import re #正则表达式匹配
import urllib.request,urllib.error #制定URL,获取网页数据
import xlwt #进行excel操作

一、爬虫流程

1.模拟浏览器向要爬的网站服务器发送请求

因为普通请求给服务器发送,会被监测到是爬虫请求,服务器当然也会回以418,此时我们需要伪装成服务器进行发送请求,具体伪装主要是请求头的User-Agent,它包含了浏览器对服务器请求的基本数据信息,包括浏览器版本,电脑系统等。

headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"
}
url = "http://httpbin.org/post"#因为自己搭建服务器过程较为复杂,可以在这个网站进行模拟,,他会根据真正服务器的返回头返回内容
data = bytes(urllib.parse.urlencode({"name":"chubby"}),encoding="utf-8")#指定发送的data信息,用urlencode进行编码
req = urllib.request.Request(url=url,data=data,headers=headers,method="POST")#向服务器发送请求

2.收到服务器发来的信息

        response = urllib.request.urlopen(request)#收到来自服务器的信息
        html = response.read().decode("utf-8")#对于收到的信息做编码处理

3.进行数据数据处理

数据的处理主要是对服务器发过来的html信息进行解析。对于html的信息主要是bs4的BeautifulSoup。
将复杂HTML之档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种;

  • 1.tag 标签
  • 2.NavigableString 标签里的内容
  • 3.BeautifulSoup 树形结构
  • 4.Comment
soup = BeautifulSoup(html, "html.parser")

使用soup.find_all方法获取到对应的标签信息,对于得到的标签信息转换成字符串进行解析

for item in soup.find_all('div',class_="item"):
    item = str(item)

接下来是re库的使用,re可以使用re.compile(正则表达式)创建对应的正则表达式对象
正则表达式符号含义

findImgSrc = re.compile(r'<img.*src="(.*?)"',re.S)#最前面的r表示忽略字符串里的特殊字符,比如‘\’,'/'等,re.S忽略换行符

使用re.findall(正则表达式对象,要解析的字符串)方法得到符合正则表达式的字符串。

img = re.findall(findImgSrc,item)[0]

4.保存

4.1excel表格

import xlwt
workbook = xlwt.Workbook(encoding="utf-8")#创建表单
worksheet = workbook.add_sheet('sheet1')#创建工作表
worksheet.write(0,0,"chubby") #写入数据 ,第一个参数为行,第二个参数为列,第三个为输入的内容
workbook.save('student.xls')#student.xls表示写入的文件地址

4.2sqlite数据库

import sqlite3

conn = sqlite3.connect("test.db")#打开或创建数据库文件

c = conn.cursor() #获取数据库操作游标

sql = '''
                insert into movie_top(
                link,img_link,cn_name,en_name,rating,judge_sum,inq,info)
                values(%s)'''%",".join(data)#%s为占位符,join表示占位符对应的数据,其中用,隔开
             
cursor = c.execute(sql)#执行sql语句,sql语句为你要创建表的语句或查询语句,当查询时,需要获取执行后的结果,即cursor
cur.close()
conn.commit()#数据库连接的提交
conn.close()#数据库连接的关闭
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值