爬虫章节

1.python如何访问互联网

URL(网页地址)+lib=》urllib

2.有问题查文档:python document.

3.response = urllib.request.urlopen(""www.baidu.com)

html =html.decode("utf-8")  破除二进制的解码操作

4.读取网页图片  wb:二进制

urlopen=request + urlopen

  1. 浏览器--审查元素--查看Network(python提交POST表单)

(浏览器和客户端的通信内容)

GET:从服务器请求获得数据

POST:向指定服务器提交被处理的数据

8分45秒点击POST(translate?smartresult)

点开之后点击Preview就可以看到被翻译的内容。

(1)然后分析一下headers的内容

①Status Code:200  正常响应的意思   404表示不正常响应

②Request Headers服务器。一般通过下面的User-Agent识别是浏览器访问还是代码访问

③Form Data:POST提交的主要内容

(2)POST需要指定的data格式,可以通过parse转换格式

(3)代码实现翻译POST功能

import urllib.request

Import urllib,parse

url=’ ’   //Headers下面的Request URL

Data={ }     //也就是Headers下面的From Data

Type:AUTO

I:l love FishC.com!

doctype:json

xmlVersion:1.6

Keyfrom:fanyi.web

Ue:UTF-8

typoRsult:true

Response = urllib.request.urlopen(url,data)

修改:

Data[‘type’] = ‘AUTO’

Data[‘i’]=’I love FishC.com!’

Data[‘doctype’] = ‘json’

Data[‘xmlVersion’] = ‘1.6’

Data[‘keyfrom’] = ‘fanyi.web’

Data[‘ue’] = ‘UTF-8’      UTF-8是对unicode很灵活的编码形式

Data[‘typoRsult’] = ‘true’

Urllib.parse.urlencode(data)     //编码形式

Response = urllib.request.urlopen(url,data).encode (‘utf-8’)  //python默认的是unicode形式

Html = response.read().decode(‘utf-8’)   //把其他编码形式变成unicode形式

Print (html)

//输出的是一个json结构

Import  json

Json.loads(html)     //载入之后发现就是一个字典

Target = json.loads(html)

Type(target)

输出:<class ‘dict’>  字典形式

Target[‘translateResult’]

输出:[[{‘tgt’:’我爱FishC.com@’,’src’:’I love FishC.com!’}]]

>>>target[‘translateResult’][0][0][‘tgt’]

输出:’我爱FishC.com!’

经过以上的分析,代码如下:

Import urllib.request

Import urllib,parse

Import json

Content = input(“请输入需要翻译的内容:”)

Url = ‘http:..fanyi.youdao.com/translagte?smartresult=dict&smartresult=;xxxxx’

Data = {}

Data[‘type’] = ‘AUTO’

Data[‘i’]=’I love FishC.com!’

Data[‘doctype’] = ‘json’

Data[‘xmlVersion’] = ‘1.6’

Data[‘keyfrom’] = ‘fanyi.web’

Data[‘ue’] = ‘UTF-8’      UTF-8是对unicode很灵活的编码形式

Data[‘typoRsult’] = ‘true’

Urllib.parse.urlencode(data).encode(‘utf-8’)     //编码形式

Response = urllib.request.urlopen(url,data)

Html = response.read().decode(‘utf-8’)

Target = json.loads(html)

Print(“翻译结果:%s” %(target[‘translateResult’][0][0][‘tgt’]))

  1. 修改headers模拟浏览器登录

(1)方法一:通过Request的headers参数修改

添加代码

Head = {}

Head[‘User-Agent’] = ‘ 把代码head里的user-agent拷贝过来即可’

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

在req = urllib.request.Request(url,data,head)

Req.add_header(‘User-Agent’,’那个网站’)

  1. 防止网站对同一ip短时间内多次访问设置权限的方法

(1)延迟访问时间(不建议使用)

(2)代理

①参数是一个字典{‘类型’:’代理ip:端口号’}

Proxy_support = urllib.request.ProxyHandler({})

②定制、创建一个opener

Opener = urllib.request.build_opener(proxy_support)

③a.安装opener

Urllib.request.install_opener(opener)

B.调用opener

Opener.open(url)

(直接搜索代理ip就行)

Import urllib.request

Url = ‘http://www.whatismyip.com.tw’

Proxy_support = urllib.request.ProxyHandler({‘http’:’’119.6.144.73:81’})

Opener = urllib.request.build_opener(proxy_support)

Urllib.request.install_opener(opener)

Urllib.request.urlopen(url)

Html = response.read().decode(‘utf-8’)

Print(html)

④修改opener的headers如下:

Import urllib.request

Url = ‘http://www.whatismyip.com.tw’

Proxy_support = urllib.request.ProxyHandler({‘http’:’’119.6.144.73:81’})

Opener = urllib.request.build_opener(proxy_support)

Opener.addheaders = [(‘user-agent’,’就是那个网页的内容’)]

Urllib.request.install_opener(opener)

Urllib.request.urlopen(url)

Html = response.read().decode(‘utf-8’)

Print(html)

⑤建立多个ip

Import urllib.request

Import random  //使用random,随机使用ip

Url = ‘http://www.whatismyip.com.tw’

Iplist = [‘119.6.144.73L81’,’183.203.208.166:8118’,’ ’]

Proxy_support = urllib.request.ProxyHandler({‘http’:’’random.choice(iplist’})

Opener = urllib.request.build_opener(proxy_support)

Opener.addheaders = [(‘user-agent’,’就是那个网页的内容’)]

Urllib.request.install_opener(opener)

Urllib.request.urlopen(url)

Html = response.read().decode(‘utf-8’)

Print(html)

  1. 抓取网站的前十页图片并保存(模块化)

Import urllib.request

Import os  //在当前目录创建文件夹

Def get_page(url);

Req = urllib.request.Request(url)

Req.add_header(‘User-Agent’,’head网址’)

response

Def Find_imgs(url):

pass

Def save_imgs(folder,img_addrs):

pass

Def download_mm(folder=’ooxx’,pages=10):   //pages表示下载10页

os.mkdir(folder)   //创建文件夹的名字folder

Os.chdir(folder)

Url=”http://jandan.net/ooxx”
page_num =int(get_page(url))

For i in range(pages):

Page_num-=i

Page_url = url+’page-’+str(page_num) + ‘#comments’  //此时已经获取了地址

//接下来要打开网站获取图片的地址

Img_addrs = Find_imgs(page_url)

Save_imgs(img_addrs)   //要熟悉明白模块化思维

If __name__ == ‘__main__’:

Download_mm()

附加:If __name__ == ‘__main__’作用:测试模块可用性。

9.想调用函数的话,直接输入一下就行了。

比如我定义了

Def url_open(url):

Req = urllib.request.Request(url)

Req.add_header(‘User-Agent’,’地址’)

Response = urllib.request.urlopen(url)

Html = response.read()

Return html

如果想在def get_page(url)里面使用url的话

就直接 html = url_open(url).decode(‘utf-8’)

也就是说其实这个是和数学上的函数引用一样的。

  1. 正则表达式

(1)search方法是在内容中找到第一次匹配成功的位置;

(2) . :表示任何文件名(不包括换行符),通配符

(3)如果想寻找.。就用\.

(4)\d:匹配一个所有数字

(5)匹配ip地址  :\d\d\d\.\d\d\d\.\d\d\d

(6)Re.search(r’[aeiou]],’I loce FishC.com!’)

(7)小横杠表示范围  [a-z]  [0-9]

(8)限制匹配次数:re.search(r’ab{3}c’,’abbbc’)

(9)给匹配次数添加范围:re.search(r’ab{3,10}c’,’abbbbbbbc’)

(10)正则表达式没有十百千的概念,只有数字的概念

Re.search(r’[01]\d\d|2[0-4]\d|25[0-5]’,’188’)  0-255

(11){0,1}重复0次或者1次,0次就是表示不重复,可有可无,可以不存在。

  1. Scrapy

(1)Scrapy是爬虫的孙子兵法。

(2)

【爬虫】python爬虫的更多相关文章

  1. [爬虫]Python爬虫基础

    一.什么是爬虫,爬虫能做什么 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.比如它在抓取一个网 ...

  2. 爬虫-Python爬虫常用库

    一.常用库 1.requests 做请求的时候用到. requests.get("url") 2.selenium 自动化会用到. 3.lxml 4.beautifulsoup 5 ...

  3. [爬虫]Python爬虫进阶

    请跳转到以下页面查看: 爬虫进阶

  4. @1-2初识Python爬虫

    初识Python爬虫 Python爬虫(入门+进阶)     DC学院 环境搭建: Python2与Python3的差异:python2与python3整体差异不大,大多是一些语法上的区别,考虑到py ...

  5. 记一次Python爬虫开发经历

    为啥要做Python爬虫,是因为我去找电影的某个网站有点坑,它支持tag标签查询自己喜欢的电影,但是不支持双标签或者三标签查询.由于一个电影对应多种类型(tag),这就意味着,我需要进入这个电影介绍界 ...

  6. Python爬虫教程

    Python爬虫(1):基本原理 Python爬虫(2):Requests的基本用法 Python爬虫(3):Requests的高级用法 Python爬虫(4):Beautiful Soup的常用方法 ...

  7. python爬虫--案例分析之针对简单的html文件

    python爬虫常用的库:Python 库(urllib.BeautifulSoup.requests.scrapy)实现网页爬虫 python爬虫最简单案例分析:  对一个html文件进行分解,获取 ...

  8. Python 爬虫模拟登陆知乎

    在之前写过一篇使用python爬虫爬取电影天堂资源的博客,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...

  9. Python爬虫小白入门(一)写在前面

    一.前言 你是不是在为想收集数据而不知道如何收集而着急? 你是不是在为想学习爬虫而找不到一个专门为小白写的教程而烦恼? Bingo! 你没有看错,这就是专门面向小白学习爬虫而写的!我会采用实例的方式, ...

  10. python爬虫成长之路(一):抓取证券之星的股票数据

    获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇使用的版本为python3.5,意在抓取证券之星上当天所 ...

随机推荐

  1. 【第十三期】B站后端开发实习生一、二面经

    写在最前:非科班渣硕去年转码一年,不是什么大佬,纯小白(go语言开发). 一面(大概70min) 首先是自我介绍.(比较传统,就是描述下自己的技术栈) 线程和进程的关系. 线程之间如何进行通信. 死锁 ...

  2. 使用@WebServlet等注解需要i注意的

    Servlet 3.0 的部署描述文件 web.xml 的顶层标签 <web-app> 有一个 metadata-complete 属性,该属性指定当前的部署描述文件是否是完全的.如果设置 ...

  3. Jquery--1--选择器分类

    基本选择器 $("#id")            //ID选择器 $("div")            //标签选择器 $(".classname ...

  4. 学习Java Web篇:MVC设计模式

    一.MVC设计模式 1.什么是MVC模式 1.1.MVC -- Model View Controller模型视图控制器 1.2.Model:模型 一个功能 一般用JavaBean 1.3.View: ...

  5. JavaWeb开发获取客户IP地址

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11737637.html 本地调试如果使用的是localhost进行访问, 则会获取到 0:0: ...

  6. vue/cli的目录结构说明

    node_modules:npm 加载的项目所需要的各种依赖模块. src:这里是我们开发的主要目录(源码),基本上要做的事情都在这个目录里面,里面包含了几个目录及文件: 1.assets:放置一些图 ...

  7. 最好的Java开发工具---IDEA

    IntelliJ IDEA工具的使用 1. 常见的Java集成开发工具 Eclipse IBM团队研发的一个开源的非常好用的集成开发环境.寓意:吞并Sun公司.不过Sun最终被Oracle公司收购了. ...

  8. Solution -「ARC 126E」Infinite Operations

    \(\mathcal{Description}\)   Link.   给定序列 \(\{a_n\}\),定义一次操作为: 选择 \(a_i<a_j\),以及一个 \(x\in\mathbb R ...

  9. Solution -「CF 510E」Fox And Dinner

    \(\mathcal{Description}\)   Link.   给定正整数集合 \(\{a_n\}\),求一种把这些数放置在任意多个圆环上的方案,使得每个环的大小大于 \(2\) 且环上相邻两 ...

  10. Solution -「国家集训队」「洛谷 P4451」整数的 lqp 拆分

    \(\mathcal{Description}\)   Link.   求 \[\sum_{m>0\\a_{1..m}>0\\a_1+\cdots+a_m=n}\prod_{i=1}^mf ...