无需令牌即可获取受密码保护的网站

2024-09-30 06:20:49 发布

您现在位置:Python中文网/ 问答频道 /正文

(对不起我的英语我会尽力的):

我是python的新手,我正在寻求帮助进行一些网络抓取。我已经有一个功能代码,以获得我想要的链接,但网站是由一个密码保护。 在我读到的许多问题的帮助下,我设法得到了一个工作代码,以刮网站后,登录,但我想要的链接是在另一个网页:

登录页面是http://fantasy.trashtalk.co/login.php

登录后的登录页(我用这个代码抓取的那个)是http://fantasy.trashtalk.co/

我想要的页面是http://fantasy.trashtalk.co/?tpl=classement&t=1

所以我有了这个代码(有些导入可能是无用的,它们来自另一个代码):

from bs4 import BeautifulSoup
import requests
from lxml import html
import urllib.request
import re

username = 'myusername'
password = 'mypass'
url = "http://fantasy.trashtalk.co/?tpl=classement&t=1"
log = "http://fantasy.trashtalk.co/login.php"

values = {'email': username,
          'password': password}

r = requests.post(log, data=values)

# Not sure about the code below but it works.
data = r.text

soup = BeautifulSoup(data, 'lxml')

tags = soup.find_all('a')

for link in soup.findAll('a', attrs={'href': re.compile("^https://")}):
    print(link.get('href'))

我明白这段代码只允许我访问登录页面,然后抓取下一个页面(登陆页面),但我不知道如何“保存”我的日志信息来访问我想要的页面。在

我想我应该在登录代码后添加类似的内容,但当我这样做时,它只会从登录页面中刮取我的链接:

^{pr2}$

我在这里也用“话题”来读?但我没能成功。在

任何帮助都将不胜感激。谢谢你抽出时间。在


Tags: 代码importhttpdata网站链接loginpassword
1条回答
网友
1楼 · 发布于 2024-09-30 06:20:49

问题是,您需要通过会话对象(而不是请求对象)来保存登录凭据。我已经修改了下面的代码,您现在可以访问位于scrape_url页面中的html标记。祝你好运!在

import requests
from bs4 import BeautifulSoup

username = 'email'
password = 'password'
scrape_url = 'http://fantasy.trashtalk.co/?tpl=classement&t=1'

login_url = 'http://fantasy.trashtalk.co/login.php'
login_info = {'email': username,'password': password}

#Start session.
session = requests.session()

#Login using your authentication information.
session.post(url=login_url, data=login_info)

#Request page you want to scrape.
url = session.get(url=scrape_url)

soup = BeautifulSoup(url.content, 'html.parser')

for link in soup.findAll('a'):
    print('\nLink href: ' + link['href'])
    print('Link text: ' + link.text)

相关问题 更多 >

    热门问题