如果一个页面被重定向到另一个b,如何刮取它

2024-09-29 17:14:06 发布

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

我正试图从https://www.memrise.com/course/2021573/french-1-145/garden/speed_review/?source_element=ms_mode&source_screen=eos_ms中删除一些文本,但正如您所见,当它通过web驱动程序加载链接时,它会自动将其重定向到登录页。在我登录之后,它会直接转到我想刮的页面,但是BeautifulSoup会一直刮着登录页面。你知道吗

我如何使它如此美丽汤刮的网页,我想它,而不是登录页?你知道吗

我已经试过在它勉强给我时间登录之前放一个time.sleep(),但是也没有用。你知道吗

soup = BeautifulSoup(requests.get("https://www.memrise.com/course/2021573/french-1-145/garden/speed_review/?source_element=ms_mode&source_screen=eos_ms").text, 'html.parser')
while True:
    front_half = soup.find_all(class_='qquestion qtext')
    print(front_half)
    time.sleep(1)

Tags: httpscomsourcemodewwwelementscreenreview
1条回答
网友
1楼 · 发布于 2024-09-29 17:14:06

您可能需要的是与requests的持久会话。This answer可能正好涵盖了您需要的内容。总体思路很简单:

  1. 您打开一个会话并向网站发送请求
  2. 发送登录post请求,以便让您登录
  3. 查询具有相同会话的url。你知道吗

您需要了解login post请求的结构以及传递的数据(用户名、电子邮件等),并用这些数据创建一个json。你知道吗

import requests

url = 'https://www.memrise.com/course/2021573/french-1-145/garden/speed_review/?source_element=ms_mode&source_screen=eos_ms'

session = requests.session()

login_data = {
    'username': ,
    'csrfmiddlewaretoken': ,
    'password': ,
    'next': '/course/2021573/french-1-145/garden/speed_review/?source_element=ms_mode&source_screen=eos_ms'
}

session.get(url) #this will redirect you and it might load some initial cookies info

r = session.post('https://<theurl>/login.py', login_data)

if r.status_code == 200: #if accepted the request
    res = session.get(url)
    soup = BeautifulSoup(res.text, 'html.parser')
    ## (...) your scraping code

相关问题 更多 >

    热门问题