需要登录的网站的网络抓取[重复]
Posted
技术标签:
【中文标题】需要登录的网站的网络抓取[重复]【英文标题】:Web scraping for sites that need login [duplicate] 【发布时间】:2020-09-16 21:24:06 【问题描述】:首先,我不是 python 专家。我正在学习 python 从这个特定的游戏网站上抓取数据。 我正在尝试从需要登录的网站上抓取数据。 除非您登录此网站,否则您将看不到数据。(我附上了您登录后将看到的上述网站的页面截图) 我尝试运行以下代码:
import requests
from bs4 import BeautifulSoup
page = requests.get('<website url>')
soup = BeautifulSoup(page.content, 'html.parser')
print(soup)
在这里,我得到的结果与我没有登录到这个网站一样。 有人可以指导我需要做什么吗?
enter image description here
【问题讨论】:
你可能不得不使用 selenium selenium-python.readthedocs.io 【参考方案1】:您可以使用requests.session()
登录,然后发出下一个请求。
例如:
import requests
from bs4 import BeautifulSoup
data = 'lEmail': '<YOUR EMAIL HERE>',
'lPass': '<YOUR PASSWORD HERE>',
'fbSig': 'web'
url = 'https://www.airline4.net/research_main.php?mode=search&rwy=1000&dist=25000&depId=3982&arr=0&arrId=0&fbSig=false'
login_url = 'https://www.airline4.net/weblogin/login.php'
with requests.session() as s:
s.post(login_url, data=data).text
# now you are logged in, just print some information:
soup = BeautifulSoup(s.get(url).content, 'html.parser')
print(soup.get_text(strip=True, separator='\n'))
打印:
Distance
Y class
J class
F class
Rwy
OPIS
-
SCIP
Pakistan, Islamabad
-
Chile, Isla De Pascua
19,273 km
10,827ft rwy
Market:
55%
Y class
473
J class
221
F class
129
OPIS
-
NTGJ
Pakistan, Islamabad
-
French Polynesia, Totegegie
17,075 km
6,562ft rwy
Market:
67%
Y class
286
J class
161
F class
21
OPIS
-
... and so on.
【讨论】:
谢谢,还有一个问题;有什么方法可以使用我们打印的输出作为输入。这里,url='https://www.airline4.net/research_main.php?mode=search&rwy=1000&dist=25000&depId=3982&arr=0&arrId=0&fbSig=false'
dist=25000 表示距离为 25000 公里。 Print 从 25000 公里开始按降序给出前 50 条路线,最后(第 50 条)结果是 16251 公里。所以现在我想创建一个循环,在 url 中使用这个 16251km 等等。我可以通过distance = input()
和更改url
使这成为可能但是有没有办法可以自动选择16251km 而不是input()
@Jnana 可以,可以使用 BeautifulSoup 解析最后的结果,然后用这个值构造 url。这就是 BeautifulSoup 的用途。在我的示例中,我仅使用它来解析文本。以上是关于需要登录的网站的网络抓取[重复]的主要内容,如果未能解决你的问题,请参考以下文章