爬虫入门日记笔记@@huzicpp


2020.7.6 15:01

数据抓取

Library分为:

  1. requests
  2. urllib
  3. Library

工具:
4. curl
5. wget
6. httpie

卸载了ubuntu,难受
下载curl,之前先下openssl。
401是未登录,403是无权限,400是bad request
request头包括

curl参数说明:

参数说明实例
-A设置user-agentcurl -A “Chrome” http://www.baidu.com
-X用指定方法请求curl -X POST http://httpbin.org/post
-I只返回请求的头信息curl -I https://www.baidu.com
-d以post方法请求url,并发送相应的参数,
用&连接多个参数或者写多个-d,或者用引号
甚至用文件来<文件名>
curl -d text = 123 http://www.httpbin.org/post
-O用远程文件名保存文件curl -O http://httpbin.org/image/jpeg
-o下载文件并以指定文件名保存curl -o fox.jepg http://httpbin.org/image/jpeg
-L跟随重定向请求curl -IL https:/baidu.com
-H设置头信息curl -o C:/image.jpg -H “accept:image/jpg” http://httpbin.org/image
-K允许发起不安全的ssl请求
-b设置cookiescurl -b text = hh http://httpbin.org/cookies
-s不显示其他消息
命令和表达式
: /d+ : 匹配数字
: **grep**:可以使其匹配返回东西

wget

参数描述实例
-O下载文件并以指定文件名保存curl -o fox.jepg http://httpbin.org/image/jpeg
–limit-rate指定下载速度wget --limit-rate …
-c断点续传,-c的当前文件才会续传
-b后台下载
-U设置user-agent
–mirror镜像某个目标网站
-p下载资源文件如CSS,JS
-r递归下载所有网站中的链接
–convert-links将相对链接改为绝对链接
-s不显示其他无关的信息
-V显示连接过程中的所有相关信息

例子
镜像下载网站

wget -c --mirror -U "Mozilla" -p --convert-links 
http://docs.python-requests.org

httpie

使用pip下载httpie,使用的时候是http。可以直接用httpie来访问网页。

爬虫的库

urllib

urllib.request的urlopen使用方法,

#urlopen 类似于一个流操作对象,返回一个对象,他的read方法返回的是二进制,用decode方法来解码。

from urllib.request import urlopen
import json
f = urlopen("http://httpbin.org/get")
text = f.read()
#print(text.decode("utf-8"))
print(dir(text))
#json字符串转化成字典
json.loads(text)
#状态码
print(f.status)
#头
print(f.headers)

设置user-agent

ua = ''
req = urllib.request.Request("http://httpbin.org.user-agent")
req.add_header("user-Agent", ua)
r = urllib.request.urlopen(req)

指定用户名


使用get参数

#传递get参数
params = urllib.parse.urlencode({"spam": 1, "eggs":2, "bacon": 3})
url = "http://httpbin.org/get?%s"%params
with urllib.request.urlopen(url) as f:
    print(json.loads(f.read()))

使用post参数

data = urllib.parse.urlencode({"spam": 1, "eggs":2, "bacon": 3})
data = data.encode()
with urllib.request.urlopen("http://httpbin.org/post", data) as f:
    print(json.load(f))

使用ip代理

#使用一个ip代理
proxy_handler = urllib.request.ProxyHandler({"http:":"ip:proxy"})
#有用户名,密码的ip
#proxy_auth_handler = urllib.request.ProxyBasicAuthHandler()
opener = urllib.request.build_opener(proxy_handler)
r = opener.open("http://httpbin.org/ip")
print(r.read())

得到url的字典

#urllib.parse.urlparse使用
o = urllib.parse.urlparse("http://guye:123@httpbin.org/get?a=8&b=5#test")
print(o.netloc)
print(o.username)

requests库

#get请求
r = requests.get("http://httpbin.org/get")
# print(r.status_code, r.reason)
# print(r.text)
r.close()
#post请求
r1 = requests.post("http://httpbin.org", data = {'a':'1'})
print(r1.text)
r1.close()
#get带参数的请求
r2 = requests.get("http://httpbin.org/get", params = {'a':'1'})
print(r2.text)
r2.close()

#带cookies的请求
cookies = dict(userid = "123456", token = "XXXXXXXXXXXXXXXXXXXXXXXXXX")
r3 = requests.get("http://httpbin.org/cookies", cookies = cookies)
print(r3.text)

#Basic-auth认证请求
r4 = requests.get("http://httpbin.org/basic-auth/guye/123456", auth = ("guye", "123456"))
print(r4.text)
#抛出异常
r4.raise_for_status()
r4.close()
#Session对象会保存服务器返回的set-cookies头信息里面的内容
s = requests.Session()
s.get("http://httpbin.org/cookies/set/userid/123456789")
r = s.get("http://httpbin.org/cookies")
print("检查session的cookies", r.text)

#使用ip代理
r = requests.get("http://httpbin.org/ip", proxies = {"https":"39.99.200.70:25565"})
print(r.text)
#timeout属性
requests.get("http://httpbin.org/delay/4", timeout = 5)

BueatifulSoup4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值