我正在使用漂亮的汤抓取网址列表。
说我在名为“卫星”的数组中获得了网址列表
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循环上使用请求是否存在问题?
答案 0 :(得分:0)
因此,在查看了请求库文档之后,我发现了Session(),它可以使整个整个脚本中的一个“请求”会话保持活动状态。
尝试过并且可以正常工作。
所以
导入请求为r
s = r.Session()
卫星= [...]
对于坐在卫星上的卫星: s.get(sat)
如果发生任何事情,以上内容不会返回None。在某些平台上,直接使用Requests.get('')似乎有问题。我的目前是Mac OS High Sierra。如果有人说他们在Linux上没有问题,那么这可能与平台有关,但我无法推测。