我一直在尝试从pantip.com提取数据,包括标题,帖子风格以及使用beautifulsoup的所有评论。 但是,我只能拉标题并发表文章。我无法获得评论。 这是标题和帖子风格的代码
import requests
import re
from bs4 import BeautifulSoup
# specify the url
url = 'https://pantip.com/topic/38372443'
# Split Topic number
topic_number = re.split('https://pantip.com/topic/', url)
topic_number = topic_number[1]
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
# Capture title
elementTag_title = soup.find(id = 'topic-'+ topic_number)
title = str(elementTag_title.find_all(class_ = 'display-post-title')[0].string)
# Capture post story
resultSet_post = elementTag_title.find_all(class_ = 'display-post-story')[0]
post = resultSet_post.contents[1].text.strip()
我试图通过ID查找
elementTag_comment = soup.find(id = "comments-jsrender")
我得到下面的结果。
elementTag_comment =
<div id="comments-jsrender">
<div class="loadmore-bar loadmore-bar-paging"> <a href="javascript:void(0)">
<span class="icon-expand-left"><small>▼</small></span> <span class="focus-
txt"><span class="loading-txt">กำลังโหลดข้อมูล...</span></span> <span
class="icon-expand-right"><small>▼</small></span> </a> </div>
</div>
问题是如何获得所有评论。请建议我如何解决它。
答案 0 :(得分:0)
无法找到这些文章的其余部分是因为该网站使用动态JavaScript填充。要解决此问题,您可以使用硒实现解决方案,请参见此处如何获取正确的驱动程序并将其添加到系统变量https://github.com/mozilla/geckodriver/releases中。 Selenium将加载页面,您将拥有对屏幕快照中看到的所有属性的完全访问权限,只有很漂亮的内容,即未解析数据。
完成后,您可以使用以下命令返回每个帖子数据:
from bs4 import BeautifulSoup
from selenium import webdriver
url='https://pantip.com/topic/38372443'
driver = webdriver.Firefox()
driver.get(url)
content=driver.page_source
soup=BeautifulSoup(content,'lxml')
for div in soup.find_all("div", id=lambda value: value and value.startswith("comment-")):
if len(str(div.text).strip()) > 1:
print(str(div.text).strip())
driver.quit()