Python 2.7 Python2.7-Beauty Soup Web Scraping find_all命令不工作

Python 2.7 Python2.7-Beauty Soup Web Scraping find_all命令不工作,python-2.7,beautifulsoup,Python 2.7,Beautifulsoup,我正在测试漂亮的汤网刮削工具。下面的代码只是连接到子Reddit并尝试打印第一页上用户帖子中所有图像的链接 import requests from bs4 import BeautifulSoup url = "https://www.reddit.com/r/pics" r = requests.get(url) if r.status_code != 200: print "failed to connect" exit() s

我正在测试漂亮的汤网刮削工具。下面的代码只是连接到子Reddit并尝试打印第一页上用户帖子中所有图像的链接

import requests
from bs4 import BeautifulSoup

url = "https://www.reddit.com/r/pics"
r = requests.get(url)

if r.status_code != 200:
    print "failed to connect"
    exit()

sourcecode = r.text
soup = BeautifulSoup(sourcecode, "html.parser")

print soup

for tag in soup.find_all('a', {'class': 'title may-blank outbound srTagged'}):
    print "entered into for loop"

    if tag['href'].startswith('http'):
        print tag['href']
此代码导致打印正确的
soup
对象,我可以看到所有内容。但是,
soup.find_all('a',{'class':'title may blank'})
命令返回一个空列表。没有错误,只有一个空列表,这意味着末尾的for循环甚至没有运行

我想知道这里怎么了。我已经复制并粘贴了字符串,我可以看到我试图在web源代码上打印的链接

我指的是这一行:

<a class = "title may-blank outbound srTagged" ...

首先,您正在体验,切换到更宽松的
html5lib

soup = BeautifulSoup(sourcecode, "html5lib")
这需要安装
html5lib

此外,您还可以简化查找链接的方式:

  • 仅使用并检查
    标题
    出站
  • 不要检查以
    http
    开头的
    href
    值,因为
    outbound
    类隐式定义了它
固定版本:

for tag in soup.select('a.title.outbound'):
    print(tag['href'])

首先,您正在体验,切换到更宽松的html5lib

soup = BeautifulSoup(sourcecode, "html5lib")
这需要安装
html5lib

此外,您还可以简化查找链接的方式:

  • 仅使用并检查
    标题
    出站
  • 不要检查以
    http
    开头的
    href
    值,因为
    outbound
    类隐式定义了它
固定版本:

for tag in soup.select('a.title.outbound'):
    print(tag['href'])

html.parser
在Python2中被破坏,BeautifulSoup提到了它:

如果可以,我建议您安装并使用
lxml
以提高速度。如果 您使用的是早于2.7.3的Python 2版本,或者 Python3早于3.2.2,安装
lxml
html5lib
Python的内置HTML解析器在应用程序中不是很好 旧版本。

请注意,如果文档无效,将生成不同的解析器 不同的美丽的汤树。有关详细信息,请参阅


html.parser
在Python2中被破坏,BeautifulSoup提到了它:

如果可以,我建议您安装并使用
lxml
以提高速度。如果 您使用的是早于2.7.3的Python 2版本,或者 Python3早于3.2.2,安装
lxml
html5lib
Python的内置HTML解析器在应用程序中不是很好 旧版本。

请注意,如果文档无效,将生成不同的解析器 不同的美丽的汤树。有关详细信息,请参阅


你想要指向reddit线程的链接,还是指向图像外部位置的链接?我想要指向图像外部位置的链接(I.dailymail.co.uk…等等)。我们的想法是在reddit页面上列出所有图像链接,然后通过一个单独的函数传递它们,该函数只需从链接列表中下载所有图像,这些链接应该是上述代码输出的。您希望链接指向reddit线程吗,或者是指图像的外部位置的链接?我要的是图像外部位置的链接(I.dailymail.co.uk…等等)。我们的想法是在reddit页面上列出所有图片链接,然后通过一个单独的功能将其传递,该功能只需从链接列表下载所有图片,这些链接本应从上面的代码中输出。这太棒了,谢谢-仍在学习基础知识,因此任何关于效率的提示都有帮助!这真是太棒了,谢谢-还在学习基础知识,所以任何关于效率的提示都会有帮助!