Python:URL列表中的第二个URL返回None

时间:2018-08-28 02:31:10

标签: python url web-scraping beautifulsoup

我正在使用漂亮的汤抓取网址列表。

说我在名为“卫星”的数组中获得了网址列表

from bs4 import BeautifulSoup as bs
import pandas as p
import numpy as np
import requests as r
import json

satellites = [
"https://solarsystem.nasa.gov/missions/insight/in-depth/",
"https://solarsystem.nasa.gov/missions/mars-cube-one/in-depth/",
"https://solarsystem.nasa.gov/missions/osiris-rex/in-depth/",
"https://solarsystem.nasa.gov/missions/exomars-trace-gas-orbiter/in-depth/",
"https://solarsystem.nasa.gov/missions/hayabusa-2/in-depth/"]

# Then my code starts with:

for sat in satellites:
    print(sat)
    page = r.get(sat)
    print("got page")
    soup = bs(page.content, "html.parser")
    print("got soup")

获取页面内容适用于第一个网址,但是第二个返回None,这使我可以追溯到“ None”没有属性“ content”。

我切换了第一个和第二个URL,结果是相同的。所有的网址都经过了有效的测试,它们是有效的。

在URL循环上使用请求是否存在问题?

1 个答案:

答案 0 :(得分:0)

因此,在查看了请求库文档之后,我发现了Session(),它可以使整个整个脚本中的一个“请求”会话保持活动状态。

尝试过并且可以正常工作。

所以

导入请求为r

s = r.Session()

卫星= [...]

对于坐在卫星上的卫星:     s.get(sat)

如果发生任何事情,以上内容不会返回None。在某些平台上,直接使用Requests.get('')似乎有问题。我的目前是Mac OS High Sierra。如果有人说他们在Linux上没有问题,那么这可能与平台有关,但我无法推测。