威尼斯人线上娱乐

python爬虫入门,爬虫学习笔记

14 4月 , 2019  

本来以为不妨可写的,因为网上那玩意一搜一大把,可是爬虫毕竟是python的一个大优点,不说说感到对不起这厮
基础点来说,python2写爬虫重点供给三个模块,urllib和urllib二,其实还有re
python爬虫入门,爬虫学习笔记。先介绍下模块的部分常用效用
urllib.urlopen(”)
#开拓三个网站,只是打开,和open大约
urllib2.Request(url)
#剖析网站,那些能够总结,具体不是很懂,壹些职能,比如加head头什么的也必要运用这些
urllib.urlretrieve(url,filename)
#下载用,把url提供的事物down下来,并用filename保存
举个蜂鸟爬图片的事例,上面上伪代码:

python爬虫_入门,python爬虫入门

本来觉得没关系可写的,因为网上那玩意一搜一大把,但是爬虫终归是python的贰个大优点,不说说感觉对不起这个家伙
基础点来说,python贰写爬虫重点需求七个模块,urllib和urllib贰,其实还有re
先介绍下模块的局地常用成效
urllib.urlopen(”)
#开拓一个网站,只是打开,和open差不离
urllib2.Request(url)
#分析网站,那一个可以简简单单,具体不是很懂,1些效能,比如加head头什么的也要求利用这么些
urllib.urlretrieve(url,filename)
#下载用,把url提供的事物down下来,并用filename保存
举个蜂鸟爬图片的例子,上边上伪代码:

1、url解析
2、打开url
3、读取url,就是read()
4、使用re.findall找到所有和图片有关系的地址,这里只jpg
5、循环下载

威尼斯人线上娱乐 1

看图上,图片链接格式是src=”
剖析以往前面包车型客车事就好办了,上面上代码

import urllib
import urllib2
import re

#处理地址,并获取页面全部的图片地址
def get_image_url(url):
  #url_format = urllib2.Request(url) #1
  url_open = urllib.urlopen(url) #2
  url_read = url_open.read() #3
  re_value = re.compile('(?<=src\=\").*?\.jpg')
  image_url_list = re.findall(re_value,url_read) #4
  return image_url_list

#这个函数专门用来下载,前面两行是将图片连接中/前面的内容全部删除,留下后面的文件名用来保存文件的,try不说了,不清楚请翻回去看容错
def down_image(image_url):
  rev = '^.*/'
  file_name = re.sub(rev,'',image_url)
  try:
    urllib.urlretrieve(image_url,file_name)
  except:
    print 'download %s fail' %image_url
  else:
    print 'download %s successed' %image_url

if __name__ == '__main__':
  url = 'http://bbs.fengniao.com/forum/10384633.html'
  image_url_list = get_image_url(url)
  for image_url in image_url_list:
    down_image(image_url) #5

困死,睡觉去。。。。。有时光再说说翻页什么的,就能爬网站了

 

本来以为没什么可写的,因为网上那玩意儿1搜一大把,但是爬虫究竟是python的一个大亮点,不说说感到对不…

前言

多几个人涉嫌python,脑海中一定首先个想到爬虫。
那就是说爬虫有是怎么着呢?
爬虫是指在网络领域,爬虫1般指抓取众多公然网址网页上数据的相干技术。
岂可是python能够做爬虫,有好多言语都足以比如java
跻身正题,入门python爬虫
首先要对python的知识点要有中央的牵线和肯定的正则表明式的学识,和肯定的html的学识,然后就足以入门python爬虫了

这是本人要幸好就学python
三爬虫时的小笔记,做备忘用,难免会有部分谬误和疏漏,望指正~~~
Python 三 爬虫学习笔记 (二)
Python 3 爬虫学习笔记 (三)
Python 三 爬虫学习笔记 (四)
Python 三 爬虫学习笔记 (伍)
Python 三 爬虫学习笔记 (6)

1、url解析
2、打开url
3、读取url,就是read()
4、使用re.findall找到所有和图片有关系的地址,这里只jpg
5、循环下载

python相关模块

在入门前大家应该率先学习爬虫相关的模块
率先需求大家通晓urllib.request模块
urllib.request模块的官方文书档案:https://www.baidu.com/link?url=2TDSZE4Syct8V21juND6HEUUXQtU14DmmeIBrvR\_uxYSAPYNpKqEQWN4XvIvxqbJED-pnZnwxLg279W1hWZKmK&wd=&eqid=ffb469a60007cd46000000025aa52e29


威尼斯人线上娱乐 2

获得网址代码

import urllib.request
req=urllib.request.urlopen(‘)
print(req)

威尼斯人线上娱乐 3

图片.png

咱俩得以发现输出的并不是本身不们想要的结果,因为
url.request.urlopen()再次回到的是文件类对象,那时候大家供给使用read()函数
import urllib.request
req=urllib.request.urlopen(‘)
html=req.read()
print(html)

威尼斯人线上娱乐 4

出口的结果不是
大家想象中格式,那是因为出口的是‘utf-8’形式的代码,大家必须运用decode()函数将‘utf-8’代码转化为Unicode格局代码
import urllib.request
req=urllib.request.urlopen(‘)
html=req.read().decode(‘utf-8’)
print(html)

威尼斯人线上娱乐 5

图片.png

威尼斯人线上娱乐 ,此刻我们就拿走到大家想要的结果了

〇. python 基础

先放上python 三的合法文书档案:https://docs.python.org/3/
(看文书档案是个好习惯)
有关python 3 基础语法方面包车型客车东西,网上有无数,大家可以自行查找.

看图上,图片链接格式是src=”
分析现在后边的事就好办了,上面上代码

爬取音讯

那是就能够开始展览爬取大家想要的音信了,是还是不是相当慢☻
做爬虫前 大家要首先必要锁定想要爬取的网址和想要获取的消息
诸如笔者想要爬取二个贴吧中的一个贴中的享有图片
那么大家开拓贴子复制网站并查看贴子的源代码

威尼斯人线上娱乐 6

图片.png

右键点击图片,能够看出图片是代码是<img class=”BDE_Image”
src=””
size=”499541″ changedsize=”true” width=”560″ height=”746″>
大家想要下载图片,就要从代码中拿走图片的地点,能够鲜明的观察该图片的地方在img标签中的src属性中

壹. 最简便易行的爬取程序

爬取百度首页源代码:

#-*-coding:utf-8 -*-

import urllib.request

url = "http://www.baidu.com"
page_info = urllib.request.urlopen(url).read()
page_info = page_info.decode('utf-8')
print(page_info)

来看上边的代码:

  • 对此python 3来说,urllib是2个不胜重要的叁个模块
    ,能够充足便宜的模拟浏览器访问网络,对于python 三 爬虫来说,
    urllib更是3个不可缺少的模块,它能够帮忙大家有益地拍卖U哈弗L.
  • urllib.request是urllib的3个子模块,能够打开和处理局地复杂的网站

The urllib.request
module defines functions and classes which help in opening URLs
(mostly HTTP) in a complex world — basic and digest authentication,
redirections, cookies and more.

  • urllib.request.urlopen()方法达成了打开url,并赶回八个http.client.HTTPResponse对象,通过http.client.HTTPResponse的read()方法,得到response
    body,转码最终经过print()打字与印刷出来.

urllib.request.urlopen(url, data=None, [timeout, ]***,
cafile=None, capath=None, cadefault=False, context=None)
For HTTP and HTTPS URLs, this function returns a
http.client.HTTPResponse
object slightly modified.
< 出自:
https://docs.python.org/3/library/urllib.request.html
>

  • decode(‘utf-八’)用来将页面转换到utf-捌的编码格式,不然会出现乱码
import urllib
import urllib2
import re

#处理地址,并获取页面全部的图片地址
def get_image_url(url):
  #url_format = urllib2.Request(url) #1
  url_open = urllib.urlopen(url) #2
  url_read = url_open.read() #3
  re_value = re.compile('(?<=src\=\").*?\.jpg')
  image_url_list = re.findall(re_value,url_read) #4
  return image_url_list

#这个函数专门用来下载,前面两行是将图片连接中/前面的内容全部删除,留下后面的文件名用来保存文件的,try不说了,不清楚请翻回去看容错
def down_image(image_url):
  rev = '^.*/'
  file_name = re.sub(rev,'',image_url)
  try:
    urllib.urlretrieve(image_url,file_name)
  except:
    print 'download %s fail' %image_url
  else:
    print 'download %s successed' %image_url

if __name__ == '__main__':
  url = 'http://bbs.fengniao.com/forum/10384633.html'
  image_url_list = get_image_url(url)
  for image_url in image_url_list:
    down_image(image_url) #5

行使正则表明式来提取图片地址

import re
import urllib.request
req=urllib.request.urlopen(‘https://tieba.baidu.com/p/5589041856’)
html=req.read().decode(‘utf-8’)
p = r'<img class=”BDE_Image” src=”([^”]+)’
imglist=re.findall(p,html)
for each in imglist:
print(each)

威尼斯人线上娱乐 7

图片.png

咱俩早就提议那些帖子全体img的标签中的src属性了
接下去大家必要用urll.request模块中的urlretrieve()对图纸举行下载
import re
import urllib.request
req=urllib.request.urlopen(‘https://tieba.baidu.com/p/5589041856’)
html=req.read().decode(‘utf-8’)
p = r'<img class=”BDE_Image” src=”([^”]+)’
imglist=re.findall(p,html)
for each in imglist:
filename=each.split(“/”)[-1]
urllib.request.urlretrieve(each,filename,None)

威尼斯人线上娱乐 8

图片.png

能够看来将图片自动下载到桌面上边去

2 模拟浏览器爬取新闻

在拜访1些网址的时候,网址一般会用判断访问是或不是带有头文件来甄别该访问是或不是为爬虫,用来作为反爬取的1种政策。
先来看一下Chrome的头消息(F12开辟开发者格局)如下:

Paste_Image.png

如图,访问头信息中展现了浏览器以及系统的新闻(headers所含音信众多,具体可自行查询)

Python中urllib中的request模块提供了仿照浏览器访问的功效,代码如下:

from urllib import request

url = 'http://www.baidu.com'
# page = request.Request(url)
# page.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36')
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
page = request.Request(url, headers=headers)
page_info = request.urlopen(page).read().decode('utf-8')
print(page_info)

能够通过add_header(key, value)
恐怕直接以参数的方式和U猎豹CS陆L一起请求访问,urllib.request.Request()

urllib.request.Request(url, data=None, headers={},
origin_req_host=None, unverifiable=False, method=None)

内部headers是贰个字典,通过那种方法得以将爬虫模拟成浏览器对网址进行访问。(https://docs.python.org/3/library/urllib.request.html?highlight=request\#module-urllib.request

困死,睡觉去。。。。。有时光再说说翻页什么的,就能爬网址了

req.add_header()

偶然我们运转次数过多贴吧会识别出是python环境而不是浏览器打开帖子下载图片
那么本人应该怎么做吧?
python urllib.request模块中有能有模拟浏览器的三个函数
那几个函数正是req.add_header()
但是大家采用前需求对后边的代码举行部分改动
将urllib.request.urlopen(‘https://tieba.baidu.com/p/5589041856’)
改为
req=urllib.request.Request(‘https://tieba.baidu.com/p/5589041856’)
reqs=urllib.request.urlopen(req)
其实那多头并无异
urll.request.urlopen()既能够承受地点 也足以是经受Request对象
当接受的地点时自动将其转化为Request对象
现行反革命大家就能够时候req.add_header()函数了
开辟浏览器的控制台随便打开2个get

威尼斯人线上娱乐 9

图片.png

能够看来User-Agent
那儿复制下来
将那段代码
req.add_header(“User-Agent”,”Mozilla/5.0 (Windows NT 10.0; WOW64;
rv:58.0) Gecko/20100101 Firefox/58.0″)
坐落urlopen函数的上面

为了更加好的不被检查评定出为爬虫,大家能够引进 time模块
在历次下载图片的时候 利用time.sleep(1)举行停顿一秒

接下去大家必要勤加演习打好基础更为熟习urllib.request模块

 

想要越来越深远的读书爬虫大家就须求学习python爬虫的有关模块和http协议等

python爬虫平日应用的模块

Beautifulsoup肆 用于越来越快提取网页中咱们想要的音信
法定文书档案地址:https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html\#id1
request 模块(与urllib.requset区别)
官方文档地址:http://docs.python-requests.org/en/master/

瞩望对你富有援助


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图