我编写了一个函数来解析archives的NDTV News中的文章URL。它返回None输出,而不是URL列表。为什么返回无?
TwoDPoint Class
因此,解析功能会在NDTV的每天存档中循环并获取URL。因此, 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())
函数会生成一段时间内的存档URL列表。
答案 0 :(得分:1)
这是因为在变量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
中,其中key是月中的天数,值是链接列表。该词典仅包含一个月的天数,如果您希望将数据存储一个月以上,则需要将该代码存储一周。