解析 URL 时 Beautiful Soup 输出 none
Beautiful Soup output none while parsing URLs
我编写了一个函数来解析 archives of NDTV News 中的文章 URL。它 returns None 输出而不是 URL 列表。为什么返回 None?
def parse_ndtv_archive_links():
url_count=0
links = []
url = makeURL()
while (url_count < len(url)):
page=requests.get(url[url_count]).text
soup=BeautifulSoup(page,'lxml')
section=soup.find('div', id="main-content")
for a in section.findAll('li'):
href=a.get('href')
links.append(href)
url_count += 1
return list(links)
print(parse_ndtv_archive_links())
因此,解析函数在 NDTV 的每一天存档上循环并获取 URL。因此 makeURL()
函数会生成一段时间内的存档 URL 列表。
这是因为在您的变量 a
中没有存储标签 <a>
但标签 <li>
和标签 <li>
没有属性 href
。解决这个问题的一种方法是这样的。
for li in section.findAll('li'):
href=li.a.get('href')
links.append(href)
编辑:现在分开几天
import requests
from bs4 import BeautifulSoup
urls = ['http://archives.ndtv.com/articles/2020-05.html']
for url in urls:
current_day = 1
page = requests.get(url).text
soup = BeautifulSoup(page, 'lxml')
days = soup.find('div', {'id': 'main-content'}).find_all('ul')
links = {day_num: [] for day_num in range(1, len(days)+1)}
for day in days:
for li in day.findAll('li'):
href = li.a.get('href')
links[current_day].append(href)
current_day += 1
print(links)
结果存储在字典 links
中,其中键是月中的天数,值是链接列表。本词典仅包含 一个 个月的天数,如果您希望存储超过一个月的数据,则需要稍微修改此代码。
我编写了一个函数来解析 archives of NDTV News 中的文章 URL。它 returns None 输出而不是 URL 列表。为什么返回 None?
def parse_ndtv_archive_links():
url_count=0
links = []
url = makeURL()
while (url_count < len(url)):
page=requests.get(url[url_count]).text
soup=BeautifulSoup(page,'lxml')
section=soup.find('div', id="main-content")
for a in section.findAll('li'):
href=a.get('href')
links.append(href)
url_count += 1
return list(links)
print(parse_ndtv_archive_links())
因此,解析函数在 NDTV 的每一天存档上循环并获取 URL。因此 makeURL()
函数会生成一段时间内的存档 URL 列表。
这是因为在您的变量 a
中没有存储标签 <a>
但标签 <li>
和标签 <li>
没有属性 href
。解决这个问题的一种方法是这样的。
for li in section.findAll('li'):
href=li.a.get('href')
links.append(href)
编辑:现在分开几天
import requests
from bs4 import BeautifulSoup
urls = ['http://archives.ndtv.com/articles/2020-05.html']
for url in urls:
current_day = 1
page = requests.get(url).text
soup = BeautifulSoup(page, 'lxml')
days = soup.find('div', {'id': 'main-content'}).find_all('ul')
links = {day_num: [] for day_num in range(1, len(days)+1)}
for day in days:
for li in day.findAll('li'):
href = li.a.get('href')
links[current_day].append(href)
current_day += 1
print(links)
结果存储在字典 links
中,其中键是月中的天数,值是链接列表。本词典仅包含 一个 个月的天数,如果您希望存储超过一个月的数据,则需要稍微修改此代码。