""这是我的代码"">
import requests
from bs4 import BeautifulSoup
import random
from selenium import webdriver
url ="http://www.yopmail.com/en/?smith"
request = requests.get(url)
soup = BeautifulSoup(request.text, 'html5lib')
print(soup)
""它返回此输出"">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
</head>
<body onload="document.getElementById('f').submit();">
<form action="." id="f" method="post">
<input id="yp" name="yp" type="hidden" value="XAQHlAwL5ZwL1ZQZlAGH3ZGV"/>
<input id="login" name="login" type="hidden" value="smith"/>
<input id="id" name="id" type="hidden" value=""/>
</form>
<noscript><br/><br/> <strong>Your browser does not support javascript or it may be disabled</strong></noscript>
</body></html>
""我想要整个SRC代码,而不是这个"">
发生这种情况是因为请求在执行Javascript之前获取源。您可以安装requests.html并从requests_html导入HTMLSession。支持的功能:
- 完全支持JavaScript
- CSS选择器(又称jQuery样式,得益于PyQuery(
- XPath选择器,适用于胆小的人
- 模拟用户代理(像真正的网络浏览器(
- 重定向的自动跟踪
- 连接-池和cookie持久性
- 通过神奇的解析,您了解并喜爱请求体验能力
- 异步支持
示例:
pip install requests-html
from requests_html import HTMLSession
from requests_html import AsyncHTMLSession
url2search = "https://******"
session = HTMLSession()
r = session.get(url2search)
JS渲染为:
r.html.render()
注意,当你第一次运行render((方法时,它会将Chromium下载到你的主目录中(例如~/.pypeteer/(。这种情况只发生一次。您可能还需要安装一些Linux软件包才能使pyppeteer正常工作
有关此链接的更多详细信息
我宁愿把它作为评论而不是答案来写,因为我只是给你一个提示,但我没有足够的声誉来写评论。这是我的两分钱:
注意
<body onload="document.getElementById('f').submit();">
<form action="." id="f" method="post">
在您的HTML源代码中。这可能是一种非常基本的保护措施,可以防止您想要进行的刮擦尝试,并且将requests.get
的用法改为requests.post
就足够了;包括更改类似GET的参数
/?史密斯
URL中的
改为POST参数。
不过,同样好的是,之后您可能会遇到更多要求您能够使用JavaScript的代码。在这种情况下,请检查Basu_C的另一个答案。