python-2.7 - 是否可以在没有 Twitter API 的情况下读取推文 URL 的推文文本?

标签 python-2.7 url web-scraping text-extraction tweets

我正在使用 Goose从 URL 读取文章的标题/正文。但是,这不适用于 twitter URL,我猜是由于不同的 HTML 标签结构。有没有办法从这样的链接读取推文文本?

一个这样的推文示例(缩短的链接)如下:

https://twitter.com/UniteAlbertans/status/899468829151043584/photo/1

注意:我知道如何通过 twitter API 阅读推文。不过,我对此不感兴趣。我只想通过解析 HTML 源代码来获取文本,而无需进行所有 twitter 身份验证。

最佳答案

自己刮

打开推文的 url,传递给您选择的 HTML 解析器并提取您感兴趣的 XPath。

刮取在:http://docs.python-guide.org/en/latest/scenarios/scrape/ 中讨论

如果站点的结构始终相同,则可以通过右键单击所需元素,选择“检查”,右键单击检查器中突出显示的行并选择“复制”>“复制 XPath”来获取 XPath。否则,请选择准确定义所需对象的属性。

在你的情况下:

//div[contains(@class, 'permalink-tweet-container')]//strong[contains(@class, 'fullname')]/text()

会给你作者的名字和
//div[contains(@class, 'permalink-tweet-container')]//p[contains(@class, 'tweet-text')]//text()

将为您提供推文的内容。

完整的工作示例:
from lxml import html
import requests
page = requests.get('https://twitter.com/UniteAlbertans/status/899468829151043584')
tree = html.fromstring(page.content)
tree.xpath('//div[contains(@class, "permalink-tweet-container")]//p[contains(@class, "tweet-text")]//text()')

结果是:
['Breaking:\n10 sailors missing, 5 injured after USS John S. McCain collides with merchant vessel near Singapore...\n\n', 'https://www.', 'washingtonpost.com/world/another-', 'us-navy-destroyer-collides-with-a-merchant-ship-rescue-efforts-underway/2017/08/20/c42f15b2-8602-11e7-9ce7-9e175d8953fa_story.html?utm_term=.e3e91fff99ba&wpisrc=al_alert-COMBO-world%252Bnation&wpmk=1', u'\xa0', u'\u2026', 'pic.twitter.com/UiGEZq7Eq6']

关于python-2.7 - 是否可以在没有 Twitter API 的情况下读取推文 URL 的推文文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45833965/

相关文章:

python - 即使使用 python with 语句,写入文件也无法完成

javascript - 如何防止在 Google App Engine 上运行的 python 2.7 中注入(inject) java 脚本

php - 使用 php 的新闻网站和使用重写规则的链接

python - Pandas 仅将 1 个表导出到 Excel 但打印所有

python - 在 Python 中使用 Regex 获取特定字符串

python - 需要一些有关 Python 代码的帮助

python - 如果之前重定向到另一个页面,如何抓取该页面

Python - 如何获取特定 div 的样式属性总数

python - 如何在 Python 中为需要文件名的函数提供 URL

java - 从基本链接获取 URL 层次结构