Python 2.7 Python2.7-Beauty Soup Web Scraping find_all命令不工作
我正在测试漂亮的汤网刮削工具。下面的代码只是连接到子Reddit并尝试打印第一页上用户帖子中所有图像的链接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
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页面上列出所有图片链接,然后通过一个单独的功能将其传递,该功能只需从链接列表下载所有图片,这些链接本应从上面的代码中输出。这太棒了,谢谢-仍在学习基础知识,因此任何关于效率的提示都有帮助!这真是太棒了,谢谢-还在学习基础知识,所以任何关于效率的提示都会有帮助!