无法从pantip.com提取数据

时间:2019-01-02 10:10:01

标签: python selenium web-scraping beautifulsoup nlp

我一直在尝试从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")

根据 enter image description here

我得到下面的结果。

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>

问题是如何获得所有评论。请建议我如何解决它。

1 个答案:

答案 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()