Python 处理请求模块时出现错误消息10054
新来的程序员。在我学习python的时候,我尝试浏览pof网站。试着用请求和美味的汤来拉屎。提前谢谢 错误似乎来自行res=requests.get(“”%pageId) 我试图删除分页页,只刮一页,但没有成功 还尝试在每个请求之间使用time.sleep 3秒,但也不起作用Python 处理请求模块时出现错误消息10054,python,beautifulsoup,python-requests,Python,Beautifulsoup,Python Requests,新来的程序员。在我学习python的时候,我尝试浏览pof网站。试着用请求和美味的汤来拉屎。提前谢谢 错误似乎来自行res=requests.get(“”%pageId) 我试图删除分页页,只刮一页,但没有成功 还尝试在每个请求之间使用time.sleep 3秒,但也不起作用 #Username and password username='MyUsername' password='MyPassword' #Login to pof site from selenium import w
#Username and password
username='MyUsername'
password='MyPassword'
#Login to pof site
from selenium import webdriver
import bs4,requests
browser = webdriver.Chrome(executable_path='/Users/Desktop/geckodriver-v0.24.0-win32/chromedriver.exe')
browser.get('https://www.pof.com')
linkElem= browser.find_element_by_link_text('Sign In')
linkElem.click()
usernameElem=browser.find_element_by_id('logincontrol_username')
usernameElem.send_keys(username)
passwordElem=browser.find_element_by_id('logincontrol_password')
passwordElem.send_keys(password)
passwordElem.submit()
#Webscraping online profile links from first 7 pagination pages
for pageId in range(7):
res=requests.get('https://www.pof.com/everyoneonline.aspx?page_id=%s' %pageId)
res.raise_for_status()
soup= bs4.BeautifulSoup(res.text)
profile = soup.findAll('div', attrs={'class' : 'rc'})
for div in profile:
print (div.findAll('a')['href'])
预期结果:
打印配置文件的所有href链接列表,以便稍后将其保存到csv
实际结果:
requests.exceptions.ConnectionError:('Connection aborted',ConnectionResetError(10054',现有连接被远程主机强制关闭',None,10054,None))
在此处输入代码
我将在抓取网页时为您提供一些常规信息:
re
模块BeautifulSoup
很棒,但就一般用途而言,re
就我的经验而言更简单标题数据
- 使用inspect element支持打开常用浏览器。转到您试图从中刮取的网页并打开inspect element dock
- 进入
部分。在这里,您可以看到浏览器发出的所有请求,以及标题和源网络
- 发出您想要模拟的请求,跟踪网络选项卡,转到包含所需
的请求,或者在您的情况下转到GET
方法POST
- 复制该特定请求的请求头。您不需要所有这些参数(例如,cookie参数将由会话添加,因此本例中不需要该参数;也不需要以
开头的标题,如:
):method:POST
- 将复制的标题从浏览器放到python dict中,下面是来自此网页的示例:
标题={
“接受”:“应用程序/json,文本/javascript,*/*;q=0.01”,
“接受编码”:“gzip,deflate,br”,
“接受语言”:“en-US,en;q=0.9,fa-IR;q=0.8,fa;q=0.7,de;q=0.6”,
“内容类型”:“application/x-www-form-urlencoded;charset=UTF-8”,
“dnt”:“1”,
“来源”:https://stackoverflow.com",
“推荐人”:https://stackoverflow.com/questions/56399462/error-message-10054-when-wescraping-with-requests-module",
“用户代理”:“Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,如Gecko)snap Chrome/74.0.3729.169 Chrome/74.0.3729.169 Safari/537.36”,
}
发布数据
- 如果您想发出post请求,则在请求的
部分应该有另一个部分,命名为“Payload”或“formdata”。将其内容放在另一个python dict中,并根据需要更改其内容标题
现在,您可以将提取的数据用于python请求,然后在响应内容上使用
re
或BeautifulSoup
来提取所需的数据。在本例中,我登录到
试着按照我写的步骤来理解这里发生的事情:
导入请求
username=“某物”
password=“somethingelse”
标题={
“接受”:“text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed exchange;v=b3”,
“接受编码”:“gzip,deflate,br”,
“缓存控制”:“最大年龄=0”,
“内容类型”:“应用程序/x-www-form-urlencoded”,
“dnt”:“1”,
“来源”:https://aavtrain.com",
“推荐人”:https://aavtrain.com/index.asp",
“升级不安全请求”:“1”,
“用户代理”:“Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,如Gecko)snap Chrome/74.0.3729.169 Chrome/74.0.3729.169 Safari/537.36”
}
数据={
“用户名”:用户名,
“密码”:密码,
“提交”:“提交”,
“登录”:“真”
}
将requests.Session()作为会话:
会话。获取(“https://aavtrain.com/index.asp")
loggedIn=session.post(“https://aavtrain.com/index.asp,标题=标题,数据=数据)
#... 登录后做一些事情。。
我希望这会有所帮助,如果您有任何疑问,我会回复您。您正在使用……请求和selenium?通常,您希望使用其中一种,因为请求模块不会“看到”selenium连接。在这种情况下,很可能页面正在识别来自IP的两个并发连接,并强制关闭一个或两个连接,因此“现有连接被远程主机强制关闭”