python爬虫入门(1)-urllib模块

作用:用于读取来自网上(服务器上)的数据

基本方法:urllib.request.urlopen(url,data=None,[]timeout]*,cafile=None,cadefault=False,context=None)

  • url:需要打开的网址
  • data:Post提交的数据
  • timeout:设置网站的访问超时时间

示例1:获取页面

  1. import urllib.request
  2. response = urllib.request.urlopen("http://www.fishc.com")#是一个HTTP响应类型
  3. html =response.read()#读取响应内容,为bytes类型
  4. # print(type(html),html) #输出的为一串<class ‘bytes‘>
  5. html = html.decode(‘utf-8‘)#bytes类型解码为str类型
  6. print(html)

示例2:抓一只猫

  1. import urllib.request
  2. response = urllib.request.urlopen("http://placekitten.com/g/400/400")
  3. cat_img = response.read()
  4. with open(‘cat_400_400.jpg‘, ‘wb‘) as f:
  5. f.write(cat_img)

示例3:翻译器

右击浏览器,选择检查或审查元素,再点击网络,找到post的 Name,复制RequestURL

在headers中找到Form Data,复制表单中内容

  1. import urllib.request
  2. import urllib.parse
  3. import json
  4. import time
  5. while True:
  6. content = input("请输入需要翻译的内容《输入q!退出程序》:")
  7. if content == ‘q!‘:
  8. break
  9.   url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=http://www.youdao.com/"    #即RequestURL中的链接
  10. data = {}
  11.     #Form Data中的内容,适当删除无用信息
  12. data[‘i‘] = content
  13. data[‘smartresult‘] = ‘dict‘
  14. data[‘client‘] = ‘fanyideskweb‘
  15. data[‘doctype‘] = ‘json‘
  16. data[‘version‘] = ‘2.1‘
  17. data[‘keyfrom‘] = ‘fanyi.web‘
  18. data[‘action‘] = ‘FY_BY_CLICKBUTTON‘
  19. data[‘typoResult‘] = ‘true‘
  20. data = urllib.parse.urlencode(data).encode(‘utf-8‘)
  21. #打开网址并提交表单
  22. response = urllib.request.urlopen(url, data)
  23. html = response.read().decode(‘utf-8‘)
  24. target = json.loads(html)
  25. print("翻译结果:%s" % (target[‘translateResult‘][0][0][‘tgt‘]))
  26. time.sleep(2)

隐藏和代理

隐藏:1.通过request的headers参数修改

2.通过Request.add_header()方法修改

代理:1.proxy_support = urllib.request.ProxyHandler({}) #参数是一个字典{‘类型‘:‘代理IP:端口号‘}

2.opener = urllib.request.build_opener(proxy_support) #定制、创建一个opener

3.urllib.request.install_opener(opener) #安装opener

opener.open(url) #调用opener

代理

示例5:代理

  1. import urllib.request
  2. import random
  3. url = ‘http://www.whatismyip.com.tw/‘
  4. iplist = [‘61.191.41.130:80‘,‘115.46.97.122:8123‘,]
  5. #参数是一个字典{‘类型‘:‘代理IP:端口号‘}
  6. proxy_support = urllib.request.ProxyHandler({‘http‘:random.choice(iplist)})
  7. #定制、创建一个opener
  8. opener = urllib.request.build_opener(proxy_support)
  9. #通过addheaders修改User-Agent
  10. opener.addheaders = [(‘User-Agent‘,‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36‘)]
  11. #安装opener
  12. urllib.request.install_opener(opener)
  13. response = urllib.request.urlopen(url)
  14. html = response.read().decode(‘utf-8‘)
  15. print(html)

示例6:简单爬取贴吧图片

  1. import urllib.request
  2. import re
  3. def open_url(url):
  4. #打开URL并修改header,将URL内容读取
  5. req = urllib.request.Request(url)
  6.     #通过add_header修改User-Agent
  7. req.add_header(‘User-Agent‘,‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36‘)
  8. page = urllib.request.urlopen(req)
  9. html = page.read().decode(‘utf-8‘)
  10. return html
  11. def get_img(html):
  12. p = r‘<img class="BDE_Image" src="([^"]+\.jpg)‘
  13. imglist = re.findall(p,html)#寻找到图片的链接
  14. for each in imglist:
  15. filename = each.split("/")[-1]
  16. urllib.request.urlretrieve(each,filename,None)#保存图片
  17. if __name__ == ‘__main__‘:
  18. url = "https://tieba.baidu.com/p/5090206152"
  19. get_img(open_url(url))

null

时间: 2024-08-23 22:49:17

python爬虫入门(1)-urllib模块的相关文章

Python爬虫入门之Urllib库的高级用法

1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览器,调试浏览器F12,我用的是Chrome,打开网络监听,示意如下,比如知乎,点登录之后,我们会发现登陆之后界面都变化了,出现一个新的界面,实质上这个页面包含了许许多多的内容,这些内容也不是一次性就加载完成的,实质上是执行了好多次请求,一般是首先请求HTML文件,然后加载JS,CSS 等等,经过多次

python爬虫开发之urllib模块详细使用方法与实例全解

爬虫所需要的功能,基本上在urllib中都能找到,学习这个标准库,可以更加深入的理解后面更加便利的requests库. 首先 在Pytho2.x中使用import urllib2——-对应的,在Python3.x中会使用import urllib.request,urllib.error 在Pytho2.x中使用import urllib——-对应的,在Python3.x中会使用import urllib.request,urllib.error,urllib.parse 在Pytho2.x中使

Python爬虫入门之三urllib库的基本使用

前言 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地.在Python中有很多库可以用来抓取网页,我们先学习urllib. 注:此博客开发环境为python3 urlopen 我们先来段代码: # urllib_urlopen.py # 导入urllib.request import urllib.request # 向指定的url发送请求,并返回服务器响应的类文件对象 response = urllib.request.urlopen("http://www.bai

转 Python爬虫入门四之Urllib库的高级用法

静觅 » Python爬虫入门四之Urllib库的高级用法 1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览器,调试浏览器F12,我用的是Chrome,打开网络监听,示意如下,比如知乎,点登录之后,我们会发现登陆之后界面都变化了,出现一个新的界面,实质上这个页面包含了许许多多的内容,这些内容也不是一次性就加载完成的,实质上是执行了好多次请求,一般

Python爬虫入门六之Cookie的使用

大家好哈,上一节我们研究了一下爬虫的异常处理问题,那么接下来我们一起来看一下Cookie的使用. 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密) 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的.那么我们可以利用Urllib2库保存我们登录的Cookie,然后再抓取其他页面就达到目的了. 在此之前呢,我们必须先介绍一个opener的概念. 1.Opener 当你获取一个

Python爬虫入门之Cookie的使用

本节我们一起来看一下Cookie的使用. 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密) 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的.那么我们可以利用Urllib2库保存我们登录的Cookie,然后再抓取其他页面就达到目的了. 在此之前呢,我们必须先介绍一个opener的概念. 1.Opener 当你获取一个URL你使用一个opener(一个urllib2.Ope

Python爬虫入门 | 爬取豆瓣电影信息

这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬虫的大门啦~好啦,正式开始我们的第二节课<爬取豆瓣电影信息>吧!啦啦哩啦啦,都看黑板~1. 爬虫原理1.1 爬虫基本原理听了那么多的爬虫,到底什么是爬虫?爬虫又是如何工作的呢?我们先从"爬虫原理"说起.爬虫又称为网页蜘蛛,是一种程序或脚本.但重点在于:它能够按照一定的规则,自动

Python爬虫入门七之正则表达式

在前面我们已经搞定了怎样获取页面的内容,不过还差一步,这么多杂乱的代码夹杂文字我们怎样把它提取出来整理呢?下面就开始介绍一个十分强大的工具,正则表达式! 1.了解正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑. 正则表达式是用来匹配字符串非常强大的工具,在其他编程语言中同样有正则表达式的概念,Python同样不例外,利用了正则表达式,我

转 Python爬虫入门七之正则表达式

静觅 » Python爬虫入门七之正则表达式 1.了解正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑. 正则表达式是用来匹配字符串非常强大的工具,在其他编程语言中同样有正则表达式的概念,Python同样不例外,利用了正则表达式,我们想要从返回的页面内容提取出我们想要的内容就易如反掌了. 正则表达式的大致匹配过程是:1.依次拿出表达式和文本中的字符比较,2.如果每一个

python爬虫----(1. 基本模块)

python爬虫,web spider.爬取网站获取网页数据,并进行分析提取. 基本模块使用的是 urllib,urllib2,re,等模块 (一)基本用法,例子 (1)进行基本GET请求,获取网页html #!coding=utf-8 import urllib import urllib2 url = 'http://www.baidu.com/' # 获取请求 request = urllib2.Request(url) try:     # 根据request,得到返回response