我遇到了与this帖子中的人类似的问题。我想创建一个函数,该函数在ratemyprofessor.com上获取教授的url,并从所有注释中获取所有文本。但是,默认情况下,页面只显示前20个注释,然后您必须加载更多,以20秒为一组。好的,现在,我需要创建一个函数,以最大次数加载注释,然后获取注释数据。在浏览了我在第一句话中引用的帖子之后,我意识到我实际上可以从一些请求URL获得所有评论。
我对提出请求知之甚少,我已尝试使用引用的帖子连接点。我已经使用chrome dev工具试图查找涉及评论的电话,但我还没有找到发送请求的网址,或者真正传递给它以获得我想要的内容(对特定教授的所有评论。)
我不想仅仅是在寻求答案,而是想通过在尝试查找请求网址并从中获取所需的特定数据时询问最佳做法来概括这篇文章。
1。我正在寻找的请求网址是什么?
2。如何浏览获取评论数据?
第3。我自己可以做些什么呢?
我使用python,bs4和请求,如引用的帖子所推荐的那样。
-----编辑-----
对不起,如果我不清楚,我知道如何使用bs4解析HTML。这是我的代码:
with requests.Session() as s:
s.headers.update({"User-Agent": "Mozilla/5.0 (X11; Linux x86_64)"})
soup = BeautifulSoup(s.get("http://www.ratemyprofessors.com/ShowRatings.jsp?tid=433738").content)
yes = soup.find_all('p','commentsParagraph')
变量yes
包含页面上的所有注释,这很好,但不是我想要的全部内容。有一个脚本可以构建和格式化所有注释块,并将注释传递到块中。这些评论是从某个地方请求的,我相信(根据引用的帖子)我可以向该地址发送请求,并获得所有评论。我要求提供地址,以及随之而来的代码(可能的各种查询)以获取所有评论。
答案 0 :(得分:0)
from bs4 import BeautifulSoup
import requests
url = "http://example.com"
#var that stores url
request_it = requests.get(url).text
#using the .get method from the requests module to get the page
soup = BeautifulSoup(request_it, 'html.parser')
# args ( the html markup, parser ) as parser most common : html.parser, lxml
table = soup.find('table')
#this will for example find one table tag and includes all tags within
one_tablerow = table.find('tr')
# it will find only one table row, we can use .findAll('tr') if we want ALL
print(one_tablerow.text) #This will only print the text, sometimes we use .string if error
基础知识:
使用BeautifulSoup浏览标签并获取某些元素
a)最常见的做法是通过树示例:
soup.find('tag').h.p.a.text
例如,这将首先找到'标记'然后是.h
内的.p
标记,然后是.a
的孩子,然后是该标记的子<a href>
,例如requests, BeautifulSoup
然后从该标记中提取文本。
了解 HTML 的基础知识也非常重要,例如树术语和标签,root,child和parent。
还有一件事,这是一个广泛的问题,你说你正在使用你提到的这些模块,例如: fit_generator
但是您并没有真正使用它们,因为您提出这些问题,因此,我强烈建议您至少观看每个内容的1小时,因为这比去通过文档。但是,我发布是因为我希望此代码至少可以让您熟悉术语,并且当您运行此代码时,您将会进行更多探索......