相关疑难解决方法(0)

Python:从urllib2.urlopen调用获取HTTP头?

是否urllib2urlopen拨打电话时获取整个页面?

我想在不获取页面的情况下读取HTTP响应头.它看起来像urllib2打开HTTP连接,然后获取实际的HTML页面......或者它是否只是通过urlopen调用开始缓冲页面?

import urllib2
myurl = 'http://www.kidsidebyside.org/2009/05/come-and-draw-the-circle-of-unity-with-us/'
page = urllib2.urlopen(myurl) // open connection, get headers

html = page.readlines()  // stream page
Run Code Online (Sandbox Code Playgroud)

python forwarding urllib

47
推荐指数
5
解决办法
10万
查看次数

为什么相同的请求会在两台机器上导致不同的状态代码 200 和 429?

这是我的脚本:

import requests, os

ips = ['158.46.169.208','158.46.169.252','158.46.169.76','158.46.171.23','158.46.172.217','158.46.172.55','158.46.172.98','158.46.173.104']
headers =  {"User-Agent": "Edg/90.0.818.56"}

os.system("python3 --version") #On Windows it changes to os.system("python --version")

for i in ips:
    pr = {'http':"http://"+"abcd-"+i+':xyz@example.io:22225','https':'https://'+"abcd-"+i+':xyz@example.io:22225'}
    res1 = requests.get("https://www.google.com/search?q=butter",headers=headers, proxies= pr)
    print(requests.get("https://www.httpbin.org/ip",proxies = pr,headers=headers).text)
    print(res1.status_code)
Run Code Online (Sandbox Code Playgroud)

Windows 10 上的输出:

import requests, os

ips = ['158.46.169.208','158.46.169.252','158.46.169.76','158.46.171.23','158.46.172.217','158.46.172.55','158.46.172.98','158.46.173.104']
headers =  {"User-Agent": "Edg/90.0.818.56"}

os.system("python3 --version") #On Windows it changes to os.system("python --version")

for i in ips:
    pr = {'http':"http://"+"abcd-"+i+':xyz@example.io:22225','https':'https://'+"abcd-"+i+':xyz@example.io:22225'}
    res1 = requests.get("https://www.google.com/search?q=butter",headers=headers, proxies= pr)
    print(requests.get("https://www.httpbin.org/ip",proxies = pr,headers=headers).text)
    print(res1.status_code)
Run Code Online (Sandbox Code Playgroud)

Ubuntu 18.04 上的输出:

Python 3.8.2
{ …
Run Code Online (Sandbox Code Playgroud)

python linux python-3.x python-requests

7
推荐指数
1
解决办法
176
查看次数

TooManyRequests 越界错误

overpy用来查询 Overpass API,数据的性质使得我有很多查询要执行。我遇到了 429OverpassTooManyRequests异常,我正在努力遵守规则。我已经尝试引入time.sleep方法来分隔请求,但我没有关于程序在继续之前应该等待多长时间的依据。

我发现这个链接提到了“Retry-after”标头:
How to avoid HTTP error 429 (Too Many Requests) python

有没有办法在overpy响应中访问该标头?我已经浏览了文档和源代码,但没有任何内容可以让我访问该标题,以便我可以暂停查询,直到可以再次这样做为止。

我正在使用 Python 3.6 和 overpy 0.4。

python overpass-api

6
推荐指数
1
解决办法
2798
查看次数

您如何查看机械化正在使用的请求标头?

我试图以编程方式向表单提交一些数据.我有一个小问题,服务器"不喜欢"我发送的内容.令人沮丧的是,没有任何错误信息或任何可以帮助诊断问题的信息,所有这一切都会让我回到我点击时开始的同一页面br.submit().

当我在浏览器中手动单击提交按钮时,生成的页面显示一个小的"成功!" 信息.通过脚本提交时不会显示此类消息.此外,实际上没有更改发布到服务器.这很奇怪,我第一次遇到这种行为.

通过Mechanize文档,它表明在这些奇怪的,难以诊断的问题下,最好复制浏览器实际提交的请求标头.

我的问题是,当我打电话时,如何查看请求标题是什么br.submit()

示例代码

location = 'http://ww.mysite.com'

br = mechanize.Browser()
cj = mechanize.LWPCookieJar()
br.set_cookiejar(cj)

username = MY_USER_NAME
password = MY_PASSWORD
br.addheaders.append(('Authorization', 'Basic %s' % base64.encodestring('%s:%s' % (username, password))))

br.open(location)

br.select_form(nr=0)
br['text'] = 'MY JUNK TO SUBMIT'    #Text field. Can put anything
br['DropDown1'] = ['4']             #This is a dropdown of integer values
br['DropDown2'] = ['3']             #Also a dropdown of ints
br.submit()
Run Code Online (Sandbox Code Playgroud)

在提交表单时如何查看正在发送的标题?

python mechanize web-scraping

3
推荐指数
1
解决办法
7536
查看次数

使用BeautifulSoup 429错误使用Python进行Web抓取

拳头我不得不说,我对使用Python进行网络抓取非常陌生。我正在尝试使用这些代码行抓取数据

import requests
from bs4 import BeautifulSoup
baseurl ='https://name_of_the_website.com'
html_page = requests.get(baseurl).text
soup = BeautifulSoup(html_page, 'html.parser')
print(soup)
Run Code Online (Sandbox Code Playgroud)

作为输出,我没有得到预期的HTML页面,但另一个HTML页面显示:内容抓取工具行为不当请使用robots.txt您的IP已受速率限制

为了检查我写的问题:

try:
page_response = requests.get(baseurl, timeout =5)
 if page_response.status_code ==200:
   html_page = requests.get(baseurl).text
   soup = BeautifulSoup(html_page, 'html.parser')

 else:
  print(page_response.status_code)
except requests.Timeout as e:
print(str(e))
Run Code Online (Sandbox Code Playgroud)

然后我得到429(请求太多)。

我该怎么处理这个问题?这是否意味着我无法打印页面的HTML,是否阻止了我刮擦页面的任何内容?我应该旋转IP地址吗?

python beautifulsoup web-scraping python-requests

1
推荐指数
1
解决办法
953
查看次数