python网络爬虫技术是什么,python网络爬虫需要哪些包
Yyds干货库存
目录
百度翻译抓取
思考
过程
代码实现
代码一
结果
代码二
结果
代码分析
urllib
即时战略游戏
1.urlopen()
百度翻译通过百度翻译抓取,翻译,点击F12,就可以看到网络另一端的数据传输。当你在后台看到翻译网站的时候,我们可以把百度翻译网站伪装在前台,把同样的数据发送到翻译后台,然后得到后台传回来的翻译信息。这里的百度翻译需要打着做浏览器的幌子发送信息。但是,如果有翻译,就没必要装浏览器了。
先处理翻译。
编辑
查找帖子
右边有相应翻译的帖子
编辑
编辑
获取后台翻译URL
编辑
获取请求字段
编辑
从urllib导入请求中实现代码1,解析
导入json
headers={ User-Agent : Mozilla/5.0(Windows NT 10.0;Win64x64) AppleWebKit/537.36 (KHTML,像壁虎)’
chrome/68 . 0 . 3440 . 75 Safari/537.36 }
Content=input(请输入您要翻译的内容:)
Dict={kw:content}#要翻译的内容
new _ name=parse . urlencode(dict)#进行代码转换
URL= 3359fanyi.baidu.com/sug # URL连接
Response=request.request (URL,headers=headers,data=bytes (new _ name,encoding= UTF-8)) #
Text=request.urlopern (response)。阅读()。解码( UTF-8) #抓取数据
content=json.loads(文本)
打印(翻译结果:,内容[数据][0])
在实施的时候,会出现越界的问题。
结果
编辑
来自urllib导入请求的代码,解析
导入json
headers={ User-Agent : Mozilla/5.0(Windows NT 10.0;Win64x64) AppleWebKit/537.36 (KHTML,像壁虎)’
chrome/68 . 0 . 3440 . 75 Safari/537.36 }
Content=input(请输入您要翻译的内容:)
Dict={kw:content}#要翻译的内容
new _ name=parse . urlencode(dict)#进行代码转换
URL= 3359fanyi.baidu.com/sug # URL连接
Response=request.request (URL,headers=headers,data=bytes (new _ name,encoding= UTF-8)) #
Text=request.urlopern (response)。阅读()。解码( UTF-8) #抓取数据
content=json.loads(文本)
打印(翻译结果:,内容[数据][:-1])
为了解决code one越界的问题,我直接用-1作为索引来限定最终的边界。
结果
编辑
代码分析:我大概系统地记录了网络爬虫的常用语句。
python2中的代码解析,有两个库,urllib和urllib2,用来发送请求。在python3中,urllib和urllib2已经统一合并为urllib。
Urlliburllib库是python内置的http请求库,这意味着无需额外安装即可使用。
它包含以下模块:
请求
最基本的HTTP请求模块可以用来模拟发送请求。就像在浏览器中输入一个网站,然后按enter键一样,您可以通过向库方法传入URL和额外的参数来模拟这个过程。
错误
异常处理模块,如果有请求错误,我们可以捕捉这些异常,然后重试或其他操作,以确保程序不会意外终止。
从语法上分析
模块,提供了很多URL处理方法,比如拆分、解析、合并等。
机器人解析器
主要用于识别网站的robot.txt文件,进而判断哪些网站可以抓取,哪些网站不可以。其实用的比较少。
Send request 1.urlopen()以CSDN网站为例:
导入urllib.request
response=urllib . request . urlopen( https://blog . csdn . net )
print(response.read()。解码( utf-8 ))
运行结果:
编辑
如你所见,它返回了网站的源代码。
使用类型的方法输出响应类型:
导入urllib.request
response=urllib . request . urlopen( https://blog . csdn . net )
#print(response.read()。解码( utf-8 ))
打印(类型(响应))
运行结果:
编辑
response=URL lib . request . URL opern( https://blog . csdn . net )返回一个HTTPRespons类型的对象,主要包括read()、readinto()、getheader(name)、getheaders()、fileno()和msg、version、status、reason等方法。我们可以使用这些方法,通过使用响应变量来获取信息。
例如,使用read()方法:
导入urllib.request
response=urllib . request . urlopen( https://blog . csdn . net )
打印(response.status)#输出状态代码
Print(response.getheaders())#响应头信息
print(response . get header( Server ))
传递参数Server得到响应头中的服务器值,结果是openresty,
意味着服务器是用openresty构建的。
编辑
使用最基本的urlopen()方法,可以完成最基本的简单网页的GET请求抓取。
Urlopen函数API:
urllib.request.uropen(url,data=None)
数据参数
数据参数是可选的。如果需要添加这个参数,需要使用bytes()方法将参数转换成字节流编码格式的内外,也就是bytes类型。
如果传递此参数,其请求模式不是GET模式,而是POST模式。
导入urllib.request
导入urllib.parse
数据=字节(URL lib . parse . urlencode({ word : hello }),编码=utf-8 )
response=urllib . request . urlopen( https://http bin . org/post ,data)
print(response.read()。解码( utf-8 ))
编辑
爱菠萝的。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。