爬爬
推荐使用requests库,相比urllib使用要简介的多
requests向目标站点发送请求,获得一个HTTPresponse响应
import requests
requests.get('http://httpbin.org/get')
requests.post('http://httpbin.org/post')
requests.put('http://httpbin.org/put')
requests.delete('http://httpbin.org/delete')
requests.head('http://httpbin.org/get')
requests.options('http://httpbin.org/get')
# http://httpbin.org 网址是一个测试网址
看看response里都有些啥
import requests
response = requests.get('http://www.baidu.com')
print(response.status_code) # 打印状态码
print(response.url) # 打印请求url
print(response.headers) # 打印头信息
print(response.cookies) # 打印cookie信息
print(response.text) # 以文本形式打印网页源码
print(response.content) # 以字节流形式打印,用于下载文件
get请求携带参数,有两种方法
1.将数据放在请求地址
2,将数据放入字典,作为get方法的参数
import requests
response = requests.get('http://httpbin.org/get?name=gemey&age=22')
print(response.text)
'''
响应内容
{
"args": {
"age": "22",
"name": "gemey"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Connection": "close",
"Host": "httpbin.org",
"User-Agent": "Python-requests/2.19.1"
},
"origin": "117.136.46.209",
"url": "http://httpbin.org/get?name=gemey&age=22"
}
'''
import requests
data = {
'name':'lu',
'age':18
}
response = requests.get('http://httpbin.org/get',params=data)
print(response.text)
'''
响应内容
{
"args": {
"age": "18",
"name": "lu"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Connection": "close",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.19.1"
},
"origin": "117.136.46.209",
"url": "http://httpbin.org/get?name=lu&age=18"
}
'''
json方法
import requests
response = requests.get('http://httpbin.org/get')
print(response.text)
print(response.json()) # response.json()方法同json.loads(response.text)
print(type(response.json()))
添加请求头
获取请求头:
添加:
import requests
headers = {
'User-Agent':'网页上的User-Agent,粘过来'
}
response = requests.get('http://httpbin.org/get',headers=headers)
异常处理
import requests
from requests.exceptions import ReadTimeout,HTTPERROR,RequestException
try:
response = requests.get('http://www.baidu.com',timeout=0.5)
print(response.status_code)
except ReadTimeout:
print('timeout')
except HTTPError:
print('httperror')
except RequestException:
print('reqerror')
post方法:
在通过requests.post()进行POST请求时,传入报文的参数有两个,一个是data,一个是json。常见的form表单可以直接使用data参数进行报文提交,而data的对象则是python中的字典类型
# post 语法
post(url, data=None, json=None, **kwargs)
def post_name_money(number, name, money):
url = "http://newcredit.ezendai.com/credit-admin/offer/offerInfo/insert?r=1556086333984"
header = {
"User-Agent": "Mozilla/5.0 (windows NT 5.1) APPleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36",
"Cookie": "{0}".format(cookies)}
data = {
'loanId':'',
'isShowPayChannel':'true',
'borrowName':'{0}'.format(name),
'contractNum':'{0}'.format(number),
}
html = requests.post(url, data, headers=header).html
相关阅读
python3 起点中文网架空历史小说爬虫 尝试爬取起点中文网的全部架空历史小说的一些信息。信息包括:小说网址、书名、作者、简介、
笔者此次由于需要做数据分析,所以写了一份儿爬虫,爬取新浪微博的微博评论和评论人信息以及转发情况和转发后的点赞情况。 爬取新浪
先说结论,关闭scrapy自带的ROBOTSTXT_OBEY功能,在setting找到这个变量,设置为False即可解决。 使用scrapy爬取淘宝页面的时候,在提交h
目录 1.点开开心网的登录界面 2.获取login_url 以及 账号和密码 第一种方法 :F12 找到form表单 第二种方法:Network 3.开始写代码
current time: 2019.3.21 正常 今天跑了一下数据,发现百度随机返回缺失的数据~~,这就有点坑了 对此 我们就只能更换获取数据的接