Web抓取需要登录的网站

时间:2020-05-29 10:19:50

标签: python-3.x web-scraping beautifulsoup

首先,我不是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

1 个答案:

答案 0 :(得分: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.