是否可以在没有推文 API 的情况下阅读推文 URL 的推文文本?
Is it possible to read tweet-text of a tweet URL without twitter API?
我正在使用 Goose 阅读来自 URL 的文章的 title/text-body。然而,这不适用于 twitter URL,我猜是由于不同的 HTML 标签结构。有没有办法从这样的 link 中读取推文文本?
一个这样的推文示例(简称link)如下:
https://twitter.com/UniteAlbertans/status/899468829151043584/photo/1
注意:我知道如何通过 Twitter 阅读推文 API。不过,我对此不感兴趣。我只想通过解析 HTML 源来获取文本,而无需所有 Twitter 身份验证麻烦。
自己刮痧
打开推文的 url,传递给您选择的 HTML 解析器并提取您感兴趣的 XPaths。
抓取讨论在:http://docs.python-guide.org/en/latest/scenarios/scrape/
XPaths 可以通过右击你想要的元素,选择 "Inspect",右击 Inspector 中突出显示的行并选择 "Copy" > "Copy 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']
我正在使用 Goose 阅读来自 URL 的文章的 title/text-body。然而,这不适用于 twitter URL,我猜是由于不同的 HTML 标签结构。有没有办法从这样的 link 中读取推文文本?
一个这样的推文示例(简称link)如下:
https://twitter.com/UniteAlbertans/status/899468829151043584/photo/1
注意:我知道如何通过 Twitter 阅读推文 API。不过,我对此不感兴趣。我只想通过解析 HTML 源来获取文本,而无需所有 Twitter 身份验证麻烦。
自己刮痧
打开推文的 url,传递给您选择的 HTML 解析器并提取您感兴趣的 XPaths。
抓取讨论在:http://docs.python-guide.org/en/latest/scenarios/scrape/
XPaths 可以通过右击你想要的元素,选择 "Inspect",右击 Inspector 中突出显示的行并选择 "Copy" > "Copy 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']