python数据挖掘第二篇-爬虫

python爬虫

urllib用法

eg1:
from urllib import request
data = request.urlopen(urlString).read()?# data获取的是该网页的所有源码内容
data=data.decode("utf-8")?# 对data编码
import re
pat=‘<div class="name">(.*?)</div>
res = re.findall(pat,data)?# res为一个匹配结果列表
eg2:
request.urlretrieve(url,filename=localfilename)?#将url指定的网页爬取至filename中
request.urlcleanup()?#当使用了urlretrieve后会产生缓存占用空间,用urlcleanup可以清除缓存
request.info() request.getcode() # 访问返回码 request.geturl() # 获取当前访问的网页
timeout # 超时限制 秒为单位
data = request.urlopen(urlString,timeout=5).read()

自动模拟http请求

import urllib.parse # 数据包
url="http://www.xxx.com"
data=urllib.parse.urlencode({
"name":"xuqiqiang",
"password":"heaoiwoe"
)}.encode("utf-8")
req = request.Request(url,data)
data = request.urlopen(req).read()
fh = open("D:\loadfile.html",‘wb‘)
fh.write(data)
fh.close()
-----------------将请求结果保存完毕

爬虫异常

urllib.error
try:
...
except urllib.error as e:
if hasattr(e,"code"):
print(e.code)
if hasattr(e,"reason"):
print(e.reason)

爬虫的浏览器伪装技术

当爬取网页,返回错误码403说明对方服务器对爬虫屏蔽,此时,不能直接用之前的爬虫方式进行爬取,需要伪装成浏览器进行爬取。
url="http://www.xxx.com"
header = ("user-Agent","...")?#第二项为第一项的取值
opener = urllib.request.build_opener()
opener.addheaders=[header]

#第一种写法:
data = opener.open(url).read().decode("utf-8","ignore")
#第二种写法:
opener = urllib.request.build_opener()
opener.addheaders=[header]
urllib.request.instal_opener(opener)
data = urllib.request.urlopen(url).read().decode("utf-8","ignore")
fh=open(filepath,‘wb‘)
fh.write(data)
fh.close()

新闻爬虫实战

import urllib.request
import re
data = urllib.request.urlopen("http://news.sina.com.cn").read()
data = data.decode("utf-8","ignore")
pat = ‘href="(http://news.sina.com.cn/.*?)">‘
all_url = re.findall(pat,data)
for i in range(len(res)):
?thisurl = all_url[i]
?file = "newsFile"+str(i)+".html"
?try:
??urllib.request.urlretrieve(thisurl,file)
?except urllib.error.URLError as e:
??if hasattr(e,"code"):
???print(e.code)
??if hasattr(e,"reason"):
???print(e.reason)

爬虫防屏蔽之代理服务器

import urllib.request as rq
def use_proxy(url,proxy_addr):
?proxy = rq.ProxyHandler({"http":proxy_addr})
?opener = rq.build_opener(proxy,rq.HTTPHandler)
?rq.install_opener(opener)
?return rq.urlopen(url).read().decode("utf-8","ignore")

淘宝图片爬取

原文地址:https://www.cnblogs.com/xqqblog/p/12034490.html

时间: 2024-10-08 19:12:04

python数据挖掘第二篇-爬虫的相关文章

python速成第二篇(小爬虫+文件操作+socket网络通信小例子+oop编程)

大家好,由于前天熬夜写完第一篇博客,然后昨天又是没休息好,昨天也就不想更新博客,就只是看了会资料就早点休息了,今天补上我这两天的所学,先记录一笔.我发现有时候我看的话会比较敷衍,而如果我写出来(无论写到笔记本中还是博客中,我都有不同的感觉)就会有不同的想法,我看书或者看资料有时候感觉就是有一种惰性,得过且过的感觉,有时候一个知识想不通道不明,想了一会儿,就会找借口给自己说这个知识不重要,不需要太纠结了,还是去看下一个吧,然后就如此往复下去,学习就会有漏洞,所以这更加坚定了我写博客来记录的想法.

python入门第二篇

python 有切片和迭片的两种操作 支持list 和tuple两种数据类型 list: 第一种操作[0:1] :以第0个索引开始,到索引1 结束, [:] 什么都没有写,则是从0开始. 第二种操作[::]  第二个分号,则是指的是采样的频率. 迭片的操作:所谓的迭代就是循环: #!/usr/bin/python d={'a':1,'b':2, 'c':3, 'd':5} print d for key in d: print key for value in d.itervalues(): p

python基础-第二篇

一.运算符 1.算数运算: 算数运算符相信大家都不陌生吧,尤其是加减乘除,好!那我就带着大家看看最后三个,这三个到底是干什么玩意的? %,取两数相除的余数,看图: **,x的多少次幂,看图: //,取整除,你可以理解为向下取整,看图: 2.比较运算: 注意:当为一个等号时,多为赋值,两个等号为比较,另外不等于常用是!= 3.赋值运算: 4.逻辑运算: 逻辑运算符里,and和or好理解,那我就讲一下not:这家伙就是唱反调的--看图 5.成员运算: 成员运算符,从字面上意思去理解,问谁是不是某组织

python初识第二篇

python 编码: 第一次编程有时候会遇到乱码的情况,就可以通过以下的情况来解决 在Windows中默认的就是gbk编码,如果在代码头两部定义utf-8,系统还会按照系统的方式来定义. python2.7版过程: temp ="开心" #utf-8 temp_unicode = temp.decode("utf-8") temp_gbk = temp_unicode.encode("gbk") print(temp_gbk) 解码,需要指定原来

python开发第二篇

1.第一个程序: #-*-coding:utf-8-*- print("hello word") 1.1解析下: (1)第一行的意思:就是告诉python解释器在编译时候,要使用utf-8的编码去解释. (2)第二行就是打印出"hello word" 咯. 1.2然后怎么执行这段程序呢? (1)打开笔记本,把上面的代码保存成已.py后缀的文件,然后打开cmd,在黑色窗口输入"python 文件的路径",回车...运行完毕. 2.变量 什么是变量?

Python学习第二篇之tuple

一.元组的值不能被修改 #!/usr/bin/python tup =("a","b","c"); tup[1]=7 执行后出现如下错误: Traceback (most recent call last): File "C:\Program Files\Sublime Text 3\time.py", line 4, in <module> tup[1]=7 TypeError: 'tuple' object d

Python基础第二篇

一.三元运算 if True: name='a' else: name='b' #上面的代码用三元运算表示: name="a" if True else "b" 二.类中方法查看 Python中一切事物都是对象,对象由类创建 type 查看对象类型 dir(类型名)  查看类中提供的所有功能 help(类型名)    查看类中提供的功能详细 help(类型名.方法名) 查看类中某功能的详细 三.类型常用功能 1.整形 abs(x) #返回绝对值 x+y,x-y,x*

二丶人生苦短,我用python【第二篇】

1 编码 python解释器在加载 .py 文件中的代码时,对内容默认进行ascill编码,因此存在中文会报错,所以需要告诉python解释器,用什么编码来执行源代码.) ASCII码,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号. Unicode(统一码.万国码.单一码)是一种在计算机上使用的字符编码.Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了

python学习第二篇

一:三元运算 1 result = 1 if a>0 else 2 三元运算先判断 if后的语句是否成立,像上面代码如果a>0则 result = 1 ,不是则result = 2. 二:string与bytes相互转换 1 name = "我的名字叫雷锋" 2 print(name) 3 print(name.encode(encoding="utf-8"))#将name表示的"我的名字叫雷锋"转换为bytes 4 print(b'