To speed up your script: there is no reason for you to requests.get(item["_links"]["self"]). The content of item and urlText will be identical.
As for item["channel"]["url"] being undefined randomly: I believe there’s currently a bug where we don’t return all fields when we should. We’re looking into it.