我在 Python 3.9 中做了一个网页抓取脚本。
我想从这个网站收集一些信息:https://www.matchendirect.fr/。 这个网站是法语的,但我不认为尝试帮助我是一个真正的问题。
我需要的信息是鼠标悬停在“Pronostics des internautes”部分中显示的数组。 HTML 代码以:<table class="table table-bordered MEDtpro">
我在浏览器上重新创建了 cookie 来模拟我在这篇文章 How to send cookies with urllib 上的回答后的连接,但它没有用。
这是我的代码:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import requests
cookies = {
'PHPSESSID': 'a2q4evve875s1ibamiqmc93ru6',
'c_compte_cle': '76598fbd4fe763e768dc79275c02e11f',
'c_compte_id':'311084',
'c_compte_pseudo':'foobar',
'c_compte_url_image':'%2Fimage%2Fcommun%2Fmembre-med-t16.png',
'c_coucours_promo':'3'
}
headers = {'User-Agent': 'Mozilla/5.0'}
link = "https://www.matchendirect.fr/live-score/caen-toulouse.html"
response = requests.get(link, cookies=cookies, headers=headers)
webpage = response.text
print("Success!") if webpage.find('<table class="table table-bordered MEDtpro">')>-1 else print("Failed!")
有人可以帮我解决这个问题吗?
这个帐户是一个垃圾帐户,供想要测试的人使用。
答案 0 :(得分:1)
您正在查找的内容由 AJAX
请求更新。您可以通过向 AJAX
网址发送请求来查找数据。
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
link = "https://www.matchendirect.fr/live-score/caen-toulouse.html"
response = requests.get(link)
soup = BeautifulSoup(response.content, "html.parser")
f_id_match = soup.find("input", {"name": "f_pronostic_id_match"})["value"]
data_response = requests.get("https://www.matchendirect.fr/cgi/ajax/liste_pronostic.php?f_id_match={}&f_id_grille=".format(f_id_match))
webpage = data_response.text
print("Success!") if webpage.find('<table class="table table-bordered MEDtpro">')>-1 else print("Failed!")
您需要从页面中找到 f_id_match
,然后向该 AJAX
网址发送新请求以查找您要查找的内容。
不要设置 cookie 来模拟浏览器,使用 requests.Session()
创建一个类似浏览器的会话,然后尝试浏览 URL