第二部分 Python爬虫技术

第二部分 Python爬虫技术

1. 网络爬虫的初识
采集金融数据、商品数据、自动过滤广告、采集行业数据
2.运行原理
通用爬虫:获取初始的URL->爬页面并获取新的URL->新的URL放入URL队列->读取新URL->是否满足停止条件?->YES,停止;NO,换到第二步
聚焦网络爬虫:增加过滤
3.正则表达式(indispensable)
希望提取关注的数据,通过表达式进行提取。正则表达式是进行数据筛选的表达式。
原子:正则表达式中最基本的组成单位,每个正则表达式中至少包含一个原子。
可以匹配任意字符,^匹配字符串开始的位置,$匹配字符串结束的位置,
\s匹配任意字符,*匹配任意次数,?匹配0次或者1次
#+重复1次或者多次
#{3}前面的原子恰好出现了3次
#t{n,}t至少出现了n次
[^/s]非空白字符
贪婪模式与懒惰模式:前者尽可能多的去匹配,后者尽可能少的去匹配
正则表达式函数:
re.match()从头开始match,头不对直接返回none,只出现一个结果
re.search()从头往后match,只出现一个结果
re.compile(pat).findall(string),全局搜索函数,返回所有满足条件的结果

#简单爬虫

import urllib.request
data=urllib.request.urlopen(“https://blog.csdn.net/JIESA/article/details/81064966”).read()
pat=’(.*?)
re.compile(pat).findall(str(data))

#作业:爬取豆瓣出版社信息

#爬取数据
import urllib.request
data=urllib.request.urlopen(“https://read.douban.com/provider/all”).read()
data=data.decode(“utf-8”)

#获得数据后进行筛选
import re
pat=’

(.*?)

mydata=re.compile(pat).findall(data)

#写入文件
fh=open(“C:/Users/ASUS/Desktop/py/py练习/出版社.txt”,“w”)
for i in range(0,len(mydata)):
fh.write(mydata[i]+"\n")

fh.close()

4.Urllib实战
urlretrieve()将某一个网页直接爬到本地
urlcleanup()将urlretrieve()产生的缓存清除
info()返回一些信息
getcode()获取当前网页的状态:403禁止访问,200正常获取
geturl()获取当前网页的地址
超时设置
如果网页长时间未响应,为超时,加timeout属性,有的服务器比减慢
file=urllib.request.urlopen(“http://www.baidu.com”,timeout=1)
自动模拟HTTP请求
客户端与服务端进行通信,需要通过http请求。请求方式多种,在此讲到post和get两种方式。
#url封装成一个request,获取数据
import urllib.request
keywd=“Python”
url=“http://www.baidu.com/s?wd=”+keywd
req=urllib.request.Request(url)
data=urllib.request.urlopen(req).read()
#打开文件写入
fh=open(“C:/Users/ASUS/Desktop/py/py练习/baidu2.html”,“wb”)
fh.write(data)
fh.close()

如果是中文,加一句话解决编码问题

keywd=“尊尊”
urllib.request.quote(keywd)

例子

import urllib.request
import urllib.parse
#封装请求,把请求发出,将提交之后的网页爬下来

url=“http://www.iqianyue.com/mypost/”
mydata=urllib.parse.urlencode({“name”:“8@qq.com”,“pass”:“1234”}).encode(“utf-8”)
req=urllib.request.Request(url,mydata)
data=urllib.request.urlopen(req).read()
#以写入的方式打开,写入本地的文件

fh=open(“C:/Users/ASUS/Desktop/py/py练习/iqianyue.html”,“wb”)
fh.write(data)
fh.close()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值