资讯专栏INFORMATION COLUMN

6、web爬虫讲解2—urllib库爬虫—基础使用—超时设置—自动模拟http请求

AlanKeene / 2200人阅读

摘要:百度云搜索搜网盘利用系统自带的库写简单爬虫获取一个的源码读出源码内容将字节转化成字符串正则获取页面指定内容获取源码学院实战群正则规则,获取到号将网络文件下载保存到本地,参数网络文件,参数保存路径

【百度云搜索:http://www.lqkweb.com】 【搜网盘:http://www.swpan.cn】

利用python系统自带的urllib库写简单爬虫

urlopen()获取一个URL的html源码
read()读出html源码内容
decode("utf-8")将字节转化成字符串

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import urllib.request
html = urllib.request.urlopen("http://edu.51cto.com/course/8360.html").read().decode("utf-8")
print(html)



    
    
    
    

正则获取页面指定内容

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import urllib.request
import re
html = urllib.request.urlopen("http://edu.51cto.com/course/8360.html").read().decode("utf-8")   #获取html源码
pat = "51CTO学院Python实战群((d*?))"      #正则规则,获取到QQ号
rst = re.compile(pat).findall(html)
print(rst)

#["325935753"]

urlretrieve()将网络文件下载保存到本地,参数1网络文件URL,参数2保存路径

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from urllib import request
import re
import os

file_path = os.path.join(os.getcwd() + "/222.html")    #拼接文件保存路径
# print(file_path)
request.urlretrieve("http://edu.51cto.com/course/8360.html", file_path) #下载这个文件保存到指定路径

urlcleanup()清除爬虫产生的内存

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from urllib import request
import re
import os

file_path = os.path.join(os.getcwd() + "/222.html")    #拼接文件保存路径
# print(file_path)
request.urlretrieve("http://edu.51cto.com/course/8360.html", file_path) #下载这个文件保存到指定路径
request.urlcleanup()

info()查看抓取页面的简介

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import urllib.request
import re
html = urllib.request.urlopen("http://edu.51cto.com/course/8360.html")   #获取html源码
a = html.info()
print(a)

# C:UsersadminAppDataLocalProgramsPythonPython35python.exe H:/py/15/chshi.py
# Date: Tue, 25 Jul 2017 16:08:17 GMT
# Content-Type: text/html; charset=UTF-8
# Transfer-Encoding: chunked
# Connection: close
# Set-Cookie: aliyungf_tc=AQAAALB8CzAikwwA9aReq63oa31pNIez; Path=/; HttpOnly
# Server: Tengine
# Vary: Accept-Encoding
# Vary: Accept-Encoding
# Vary: Accept-Encoding

getcode()获取状态码

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import urllib.request
import re
html = urllib.request.urlopen("http://edu.51cto.com/course/8360.html")   #获取html源码
a = html.getcode()  #获取状态码
print(a)

#200

geturl()获取当前抓取页面的URL

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import urllib.request
import re
html = urllib.request.urlopen("http://edu.51cto.com/course/8360.html")   #获取html源码
a = html.geturl()  #获取当前抓取页面的URL
print(a)

#http://edu.51cto.com/course/8360.html

timeout抓取超时设置,单位为秒

是指抓取一个页面时对方服务器响应太慢,或者很久没响应,设置一个超时时间,超过超时时间就不抓取了

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import urllib.request
import re
html = urllib.request.urlopen("http://edu.51cto.com/course/8360.html",timeout=30)   #获取html源码
a = html.geturl()  #获取当前抓取页面的URL
print(a)

#http://edu.51cto.com/course/8360.html

自动模拟http请求

http请求一般常用的就是get请求和post请求

get请求

比如360搜索,就是通过get请求并且将用户的搜索关键词传入到服务器获取数据的

所以我们可以模拟百度http请求,构造关键词自动请求

quote()将关键词转码成浏览器认识的字符,默认网站不能是中文

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib.request
import re
gjc = "手机"     #设置关键词
gjc = urllib.request.quote(gjc)         #将关键词转码成浏览器认识的字符,默认网站不能是中文
url = "https://www.so.com/s?q="+gjc     #构造url地址
# print(url)
html = urllib.request.urlopen(url).read().decode("utf-8")  #获取html源码
pat = "(w*w*w*)"            #正则获取相关标题
rst = re.compile(pat).findall(html)
# print(rst)
for i in rst:
    print(i)                            #循环出获取的标题

    # 官网 < em > 手机 < / em >
    # 官网 < em > 手机 < / em >
    # 官网 < em > 手机 < / em > 这么低的价格
    # 大牌 < em > 手机 < / em > 低价抢
    # < em > 手机 < / em >
    # 淘宝网推荐 < em > 手机 < / em >
    # < em > 手机 < / em >
    # < em > 手机 < / em >
    # < em > 手机 < / em >
    # < em > 手机 < / em >
    # 苏宁易购买 < em > 手机 < / em >
    # 买 < em > 手机 < / em >
    # 买 < em > 手机 < / em >

post请求

urlencode()封装post请求提交的表单数据,参数是字典形式的键值对表单数据
Request()提交post请求,参数1是url地址,参数2是封装的表单数据

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib.request
import urllib.parse

posturl = "http://www.iqianyue.com/mypost/"
shuju = urllib.parse.urlencode({                #urlencode()封装post请求提交的表单数据,参数是字典形式的键值对表单数据
    "name": "123",
    "pass": "456"
    }).encode("utf-8")
req = urllib.request.Request(posturl,shuju)     #Request()提交post请求,参数1是url地址,参数2是封装的表单数据
html = urllib.request.urlopen(req).read().decode("utf-8")  #获取post请求返回的页面
print(html)

【转载自:http://www.leiqiankun.com/?id=49】

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44039.html

相关文章

  • 7、web爬虫讲解2urllib爬虫—状态吗—异常处理—浏览器伪装技术、设置用户代理

    摘要:百度云搜索搜网盘如果爬虫没有异常处理,那么爬行中一旦出现错误,程序将崩溃停止工作,有异常处理即使出现错误也能继续执行下去常见状态码重定向到新的,永久性重定向到临时,非永久性请求的资源未更新非法请求请求未经授权禁止访问没找到对应页面服务器内部 【百度云搜索:http://www.lqkweb.com】 【搜网盘:http://www.swpan.cn】 如果爬虫没有异常处理,那么爬行中一...

    megatron 评论0 收藏0
  • Python3网络爬虫实战---20、使用Urllib:发送请求

    摘要:下面我们传入多个参数构建一个来感受一下在这里我们通过四个参数构造了一个,即请求,在中指定了和,传递的参数用了和方法来转成字节流,另外指定了请求方式为。运行结果如下通过观察结果可以发现,我们成功设置了,以及。用于处理重定向。 上一篇文章:Python3网络爬虫实战---19、代理基本原理下一篇文章:Python3网络爬虫实战---21、使用Urllib:处理异常 学习爬虫,最初的操作便...

    kun_jian 评论0 收藏0
  • 9、web爬虫讲解2urllib爬虫—实战爬取搜狗微信公众号—抓包软件安装Fiddler4讲解

    摘要:随后,为了保险,重启,火狐浏览器也重启一下,然后开始抓的包,此时你会发现你的连接并不安全等类似提示已经消失,并且已经能够抓包了。 【百度云搜索,搜各种资料:http://www.bdyss.com】 【搜网盘,搜各种资料:http://www.swpan.cn】 封装模块 #!/usr/bin/env python # -*- coding: utf-8 -*- import urll...

    go4it 评论0 收藏0
  • 8、web爬虫讲解2urllib爬虫—ip代理—用户代理和ip代理结合应用

    摘要:百度云搜索搜网盘淘宝券使用代理格式化,第一个参数,请求目标可能是或者对应设置初始化将代理设置成全局当使用请求时自动使用代理引入随机模块文件格式化注意第一个参数可能是或者,对应设置初始化将代理设置成全局当使用请求时自动使用代理请求 【百度云搜索:http://bdy.lqkweb.com】 【搜网盘:http://www.swpan.cn】 【淘宝券:http://www.tbquan....

    mrcode 评论0 收藏0
  • Python3网络爬虫实战---25、requests:高级用法

    摘要:比如我们以知乎为例,直接利用来维持登录状态。测试后,发现同样可以正常登录知乎。上一篇文章网络爬虫实战基本使用下一篇文章网络爬虫实战正则表达式 上一篇文章:Python3网络爬虫实战---24、requests:基本使用下一篇文章:Python3网络爬虫实战---26、正则表达式 在前面一节我们了解了 Requests 的基本用法,如基本的 GET、POST 请求以及 Response...

    dingding199389 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<