问 题 新手刚开始学爬虫,不知道问题出在哪,requests已经是最新版本,用get获取公司内部网页不会报错,是否是防火墙的问题? 安装了Anaconda3后,在Jupyter notebook里写入如下代码: import requests res = requests.get('http://www.sina.com.cn/china') res.encoding='utf-8' print(res.text) 显示报错: ConnectionRefusedError Traceback (most recent call last) D:Anaconda3libsite-packagesrequestspackagesurllib3connection.py in _new_conn(self) 140 conn = connection.create_connection( --> 141 (self.host, se
以下是关于 requests 的编程技术问答
问 题 学习爬虫中,初次涉及在cookie与验证码的环境下模拟登录一个站点 https://www.aaej.cn/cas/login 计划用requests库 目前困扰在以下几点: A:为什么在一次请求页面之后,每次查看该页面源码,源码中‘lt’和‘execution’的值都会变? B:在试图requests.get(https://www.aaej.cn/cas/login)怎样一并获取验证码图片(以便接下来的识别) C:综上,模拟登录该页面的正确思路大概是怎样?大概分几步? 这个问题已被关闭,原因:问题质量差 - 问题太水、伸手党 解决方案 因为它们就是变的,你不要去考虑细节,只需要找到这两个值就行 验证码是有地址的, obj.src = ctxPath + "/kaptcha.jpg?_=" + Math.random(); var ctxPath = null; 获取页面,解析登录必须的值,然后post到响应地址,建议使用re
问 题 import requests sess=requests.session() resp=sess.get('http://www.so.com') f=open('cookiefile','wb') pickle.dump(resp.cookies,f) #为什么很多代码都不是这样,而是使用cookielib的LWPCookieJar? f.close() 解决方案 你怎么还原, 用 load ? 还原之后呢, 你怎么操作cookie(增删改查) 你load之后的cookie不过是一段字符串而已, 没有更多的抽象操作, 还要自己写函数实现 cookie 是一个实体, 自然适合用 class 来抽象封装它 不是不能用pickle, 是一个方便与不方便的问题 是一个权衡各方面利弊之后的妥协选择
学习模拟登录,发送了post请求之后页面还是登录页面啊,不知道原因 import re import requests url='http://cer.imufe.edu.cn/authserver/login?service=http%3A%2F%2Fmy.imufe.edu.cn%2Findex.portal' html=requests.get(url).text lt_value=re.compile(r'name="lt" value="(.*?)"').search(html).group(1) execution_value=re.compile(r'name="execution" value="(.*?)"').search(html).group(1) dt={} dt['username']='帐号' dt['password']='密码' dt['signIn']='' dt['lt']=lt_value dt['execution']=execution_
问 题 请问如何在 Pytest 框架中模拟requests库中的Response对象? 涉及到的主体代码如下: def get_address(phone): url = 'http://www.ip138.com:8080/search.asp?action=mobile&mobile=%s' % (phone) r = requests.get(url) r.encoding = 'GBK' soup = BeautifulSoup(r.text, 'html.parser') try: data = soup.find_all('td')[6].text.split('\xa0') except IndexError: data = False print(data) return data 测试代码如下: correct_response = request
问 题 请问 requests 库 使用过程中timeout错误的默认时间是多长呢? 查看源码 理论上 timeout值可以任意设? 默认 timeout 值 是怎么来的呢? 如果我想设一个比较大的timeout 值 会生效吗? 解决方案 Requests 库是基于 urllib3 的,其连接的发起是调用了 urlopen 方法。其超时时间默认是 urllib3 中的 DEFAULT_TIMEOUT 决定。 在 urllib3中: DEFAULT_TIMEOUT = _GLOBAL_DEFAULT_TIMEOUT 而 _GLOBAL_DEFAULT_TIMEOUT 的值是由 python 标准库 socket.py 决定的,在 socket.py 的源码中可以看到: If no *timeout* is supplied, the global default timeout setting returned by :func:`getdef
问 题 今天突然发现获取微信头像出现了超时问题 requests.get('http://wx.qlogo.cn/mmopen/0wR...') 我在本地没有问题。 但是在服务器却有问题,这个代码会一直卡住。有人知道什么原因吗? 是不是下载图片需要开启某个端口呀!!有人知道是什么端口吗? 这个问题已被关闭,原因:问题已解决 - 问题已解决,且对他人无借鉴意义 解决方案 可以先登录那台服务器,用requests库手动获取一下,如果不行则尝试“2” wget那个图片,不行则尝试“3” 图片资源在http server上,可以现ping一下“wx.qlogo.cn”,从域名上来看,应该是微信的域名,可能不会有问题,然后再服务器上telnet wx.qlogo.cn 80,如果还是不行,那说明网络有问题,可以检查一下这个服务器的防火墙信息。
问 题 我想下载http://www.chuiyao.com/manhua/3670/393022.html里面的图片,但用下面的代码搜到的图片是这个http://www.chuiyao.com/static/skin5/images/pic_loading.gif。headers我是用的chrome浏览器network下的393022.html的Request Headers import requests from lxml import html def main(): url = "http://www.chuiyao.com/manhua/3670/393022.html" headers = { "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Encoding":"gzip
问 题 我用requests.get()读取固定网页上的信息(网页非常简单,不超过十个字符),然后用beautifulsoup解析,我设定的是1秒读取一次,但是发现运行时非常不稳定,有时会隔十几秒才能读到内容。这是网站服务器端的问题还是我的程序问题,能够解决吗? (服务器是我自己的,用的是nginx和uwsgi,没有刷新频率限制) python程序如下: import requests import time from bs4 import BeautifulSoup while True: html = requests.get("http://121.42.159.21") soup = BeautifulSoup(html.content,"html.parser") d1=soup.find(id="d1") d2=soup.find(id="d2") d1_state_new = d1.string d2_state_new = d2.st
使用urllib.request的代码: import urllib.request from bs4 import BeautifulSoup url="http://finance.qq.com/gdyw.htm" head = {} head['user_agent']='Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36' html=urllib.request.urlopen(url).read() soup=BeautifulSoup(html,'lxml') print(soup.prettify()) 使用requests的代码: import requests from bs4 import BeautifulSoup url = "http://finance.q
问 题 我需要使用python的requests 下载一些文件,但是文件是中文名的 chrome调试看出来的文件名是 Content-Disposition:attachment; filename=%C9%F1%BC%B6%BB%F5%C0%C9.txt requests 下载显示的却是乱码 import requests url = 'http://www.23us.so/modules/article/txtarticle.php?id=156' req = requests.head(url) headers = req.headers print( headers.get('Content-Disposition')) >> attachment; filename=ÇàÔÆÏÉ·.txt 我试过设置req.encoding 没有效果 怎么把header中的文字恢复出来,requests中似乎没有相关方法 各位可以调试一下 解决方案
问 题 实际需求场景是想让爬虫只通过检验http的返回码,以此校验之前下载的某个资源是否还在线;因为并不需要下载响应体,所以使用了requests的Session对象并在动词方法中添加了stream = True的参数,如下: s = requests.Session() s.mount('http://', requests.adapters.HTTPAdapter(pool_connections=1, pool_maxsize=1)) for i in range(20): url = "http://www.site.com/resources/%s" % i with closing(s.get(url, allow_redirects = False, stream = True)) as r: print r.status_code 因为启用了stream = True模式,未下
问 题 使用Python的requests库仿写自定义web客户端中,遇到含中文的内容提交后异常的问题。 经Fiddler查看该请求的raw,可知官方客户端的提交内容为: ... {"jsonstr":"{\"pageindex\":1,\"keyword\":\"张三\"}"} 而自行定义的客户端提交内容为: ... {"jsonstr": "{'pageindex': 1,'keyword': '\\xe5\\xbc\\xa0\\xe4\\xb8\\x89'"} 自行定义客户端的脚本大概为: # -*- coding: utf-8 -*- keyword ='张三' jsonstr ={ "pageindex":1,"keyword":keyword} data = {"jsonstr":str(jsonstr)} r = requests.post(url, data =json.dumps(data)) 尝试 data =json.dump
有些name是重复的,以及有些value是空的,比如sel_title,如何解决? 我是这样写的form,不知道错在哪里,结果是400 Bad Requests. form={'begin_ap': 'a', 'begin_hh': '0', 'begin_mi': '0', 'end_ap': 'a', 'end_hh': '0', 'end_mi': '0', 'sel_attr': ['dummy', '%'], 'sel_camp': ['dummy', '%'], 'sel_crse': '512', 'sel_day': 'dummy', 'sel_from_cred': '', 'sel_insm': ['dummy', '%'], 'sel_instr': ['dummy', 'ED2E4E78451EB376949C4166DC00AFAF'], 'sel_levl': 'dummy', 'sel_ptrm': ['dummy', '
背景: 现有一看上去是内嵌IE应用程序A,可以做一些查询等操作。 目的: 通过借助Wireshark对应用程A的通信过程分析,借助python的requests的库自行构造一个自己能掌控的程序B 状况: 在使用requests库,加载json格式的POST数据,执行特定请求时,遇到对方服务器的报错。 payload_data={"jsonstr":{ "pagesize":10, "pageindex":1, "start":"2017-03-01", "end":"2017-03-13", "keyword":"张三", "status":"0" } } r = requests.post(url, headers = headers_comm, data = json.dumps(payload_data)) Wireshark对程序A请求的侦听: 自行构造请求时的报错信息: 猜测这个请求的构造基本成功了,但对端应用程序解析我POST的数据时
我想提取网页:http://www.igxe.cn/h1z1/43385... 上该物品的当前售价和对应商品的ITEM_ID 我使用的是PYTHON2.7配合requests进行操作的,代码如下: import requests import sys headers = {'User-Agent': 'Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M032 Build/IML74K) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/4.1 Mobile Safari/533.1'} r = requests.get('http://www.igxe.cn/h1z1/433850/product-567592', headers = headers,stream=True) print r.request.headers['User-Agent'] print r
请大神指教这是错在哪儿了,没看出来。 代码如下:写法又问题吗? import requests base_url = 'https://xueqiu.com/hq#exchang...'; headers = {'user_agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.89 Safari/537.36'} req = requests.request(method='get',url=base_url,headers=headers) rsp = requests.get(req)
问 题 问题描述如下: 1.首先 通过 requests 提交 form 请求,登录成功后 保存 session 此时 可以通过selenium 用 登录之后的session 继续发送请求吗 ?因为想要实现自动回复消息功能,但是聊天窗口界面在别的 url中,而且 在聊天窗口界面需要通过 按enter键 或者 点击发送按钮发送消息 在这种情况下, selenium 和 requests 可以配合使用吗?谢谢各位了! 解决方案 我做过类似的功能,不过我是只用Selenium做到的,核心代码如下: def get_allgroupid(): driver = webdriver.PhantomJS() driver.get(address) driver.add_cookie({ 'name': 'Cookie', 'value':'p_uin=o ......此处省略若干字.....'