[英]Scrape password protected website with no token
(對不起我的英語,我會盡力而為):
我是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'))
我了解此代碼僅允許我訪問登錄頁面,然后刮取接下來的內容(登錄頁面),但我不知道如何“保存”我的登錄信息以訪問要刮取的頁面。
我想我應該在登錄代碼后添加類似這樣的內容,但是當我這樣做時,它只會從登錄頁面抓取我的鏈接:
s = request.get(url)
我也用“ with session”來閱讀一些話題嗎? 但是我沒有設法使它工作。
任何幫助將不勝感激。 感謝您的時間。
問題是您需要通過通過會話對象而非請求對象發布登錄憑據來保存登錄憑據。 我已經在下面修改了您的代碼,現在您可以訪問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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.