python - 如何抓取一个网站的所有首页文字内容?
问题描述
所以我是网页抓取的新手,我想只抓取主页的所有文本内容。
这是我的代码,但它现在可以正常工作。
from bs4 import BeautifulSoup
import requests
website_url = "http://www.traiteurcheminfaisant.com/"
ra = requests.get(website_url)
soup = BeautifulSoup(ra.text, "html.parser")
full_text = soup.find_all()
print(full_text)
当我打印“full_text”时,它给了我很多 html 内容,但不是全部,当我 ctrl + f " traiteurcheminfaisant@hotmail.com"
在 full_text 上找不到主页(页脚)上的电子邮件地址时。
谢谢你的帮助!
解决方案
快速浏览您尝试从中抓取的网站让我怀疑在通过请求模块发送简单的获取请求时并非所有内容都已加载。换句话说,网站上的某些组件(例如您提到的页脚)似乎是使用 Javascript 异步加载的。
如果是这种情况,您可能需要使用某种自动化工具导航到页面,等待它加载,然后解析完全加载的源代码。为此,最常用的工具是 Selenium。第一次设置可能有点棘手,因为您还需要为您想使用的任何浏览器安装单独的 web 驱动程序。也就是说,我上次设置它非常容易。这是一个粗略的示例,说明这对您来说可能是什么样子(一旦您正确设置了 Selenium):
from bs4 import BeautifulSoup
from selenium import webdriver
import time
driver = webdriver.Firefox(executable_path='/your/path/to/geckodriver')
driver.get('http://www.traiteurcheminfaisant.com')
time.sleep(2)
source = driver.page_source
soup = BeautifulSoup(source, 'html.parser')
full_text = soup.find_all()
print(full_text)
推荐阅读
- mysql - 获取每个朋友的所有最后一条消息 - SQL
- c# - 通过 C# 和 SqlClient 与 SQL localhost 服务器建立连接 - 不是数据库连接
- java - 带有清除的 ScheduledFuture cancel(true) 仍然执行
- database - 从 db 获取进程列表并杀死它 CMD
- python - 直方图不适用于 Python;木星; 卡在加载中
- python - python -m venv
在 Windows 上失败 - android - 设置 LinearLayout 相对于同一容器中其他 LinearLayout 的高度
- r - R 根据几个调用的 REST URL 生成数据框
- angular - 角度命令不起作用
- .htaccess - .htaccess - 对主域强制使用 www 和 https,对子域强制使用非 www 和 https