爬虫章节

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. android 如何动态设置View的margin和padding

    感谢大佬:https://blog.csdn.net/a107494639/article/details/7341077 1.动态设置padding,拿ImageView为例: ImageView ...

  2. linux 批量替换文件内容及查找某目录下所有包含某字符串的文件

    转载请注明来源:https://www.cnblogs.com/hookjc/ 1. sed C代码   grep -rl matchstring somedir/ | xargs sed -i 's ...

  3. Java程序性能监控工具

    系统性能监控: 确定系统运行的整体状态,基本定位问题所在 uptime命令 [root@localhost ~]# uptime23:19:38 up 244 days, 3:39, 34 users ...

  4. Java线程--Exchanger使用

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11868576.html Java线程--Exchanger使用: Exchanger 是用来交 ...

  5. eclipse使用的步骤

    eclipse使用的步骤: 第一步: 选择工作目录. 以后在Eclipse上面写的所有代码都是在工作目录上的. 第二步: 在Project Exploer 窗口上创建一个工程,以后我们写代码都是以工程 ...

  6. Redis——(主从复制、哨兵模式、集群)的部署及搭建

    Redis--(主从复制.哨兵模式.集群)的部署及搭建 重点: 主从复制:主从复制是高可用redis的基础,主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复. 哨兵和集群都是 ...

  7. 「 题解 」P2487 [SDOI2011]拦截导弹

    简单题意 给定 \(n\) 个数对 \((h_i, v_i)\). 求: 最长不上升子序列的长度. 对于每个 \(i\),分别求出包含数对 \((h_i, v_i)\) 的最长上升子序列的个数和最长不 ...

  8. Solution -「CF 1119F」Niyaz and Small Degrees

    \(\mathcal{Description}\)   Link.   给定一棵 \(n\) 个结点的树,边有边权,对于每个整数 \(x\in[0,n)\),求出最少的删边代价使得任意结点度数不超过 ...

  9. kubeasz 部署高可用 kubernetes 集群

    文章目录 环境准备 配置模板机 配置hosts解析 配置ssh 免密钥登陆 kubeasz 部署服务准备 配置主机清单 部署集群 环境准备 IP HOSTNAME SYSTEM 192.168.131 ...

  10. MySQL表单查询

    一.表单查询的语法 select 字段1.字段2....from 表名 where MySQL备份