【问题标题】:URLs for images in tweets推文中图片的 URL
【发布时间】:2020-07-05 11:10:37
【问题描述】:

我有一个列表,其中包含许多推文的 URL,例如https://twitter.com/EmilBakke/status/1264250412120649729 从此列表中的每条推文中,我想将图像 URL(例如https://pbs.twimg.com/media/EYuFC_PX0AA6_KB?format=jpg&name=small)提取到 URL 列表中,然后将图像从图像 URL 下载到我的本地计算机。理想情况下,图片的文件名应该是图片链接到的推文 ID。

我没有使用 Twitter API 来获取推文 URL 列表,因此我无法使用媒体实体,并且不知道特定推文是否包含图像。

我最初的想法是使用 BeautifulSoup 来获取图像 URL。我发现图像 URL 包含在这个 HTML sn-p 中: <img alt="Image" draggable="true" src="https://pbs.twimg.com/media/EYuFC_PX0AA6_KB?format=jpg&name=small" class="css-9pa8cd" title="" style=""> 但是,我似乎无法实际将 URL 提取到列表中。

这是我目前所拥有的:

from bs4 import BeautifulSoup
import re

html_page = urlopen("https://twitter.com/EmilBakke/status/1264250412120649729").read()
soup = BeautifulSoup(html_page)
for link in soup.findAll('img class', attrs={'src': re.compile("^https://")}):
    print(link.get('src'))

运行此程序不会返回任何内容,但我无法弄清楚我做错了什么。另外,我需要找到一种方法来遍历链接列表中的所有链接。我们将不胜感激!

【问题讨论】:

  • 我认为你应该 findAll just img,而不是 'img class'。
  • 感谢您的回答!但这也不会返回任何东西。

标签: python


【解决方案1】:

如果 Twitter 未检测到启用了 JavaScript,它会阻止访问他们的网站。一种解决方法是使用 Selenium + Beautiful Soup:

from bs4 import BeautifulSoup
from selenium import webdriver  
from selenium.webdriver.firefox.options import Options

browser = webdriver.Firefox()  
browser.get('https://twitter.com/EmilBakke/status/1264250412120649729')  
time.sleep(1)
html = browser.page_source
soup = BeautifulSoup(html, 'html.parser')
imgTags = soup.findAll('img')

【讨论】:

    猜你喜欢
    • 2014-05-18
    • 1970-01-01
    • 2021-08-03
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    相关资源
    最近更新 更多