响应404,但可以从python

时间:2016-06-27 13:57:52

标签: python web-scraping

我有一个webcrawler,但目前从请求模块调用requests.get(url)时出现 404 错误。但是URL可以访问。

base_url = "https://www.blogger.com/profile/"
site = base_url + blogs_to_visit.pop().rsplit('/', 1)[-1]
r = requests.get(site)
soup = BeautifulSoup(r.content, "html.parser")

# Printing some values for debugging
>>> print site
https://www.blogger.com/profile/01785989747304686024

>>> print r
<Response [404]>

但是,如果我将请求模块的字符串site硬化为完全相同的字符串。回复 202

site = "https://www.blogger.com/profile/01785989747304686024"

# Printing some values for debugging
>>> print site
https://www.blogger.com/profile/01785989747304686024
>>> print r
<Response [202]>

让我印象深刻的是,它在第​​一次打印site后看起来像一个隐藏的换行符,可能是导致问题的原因吗?

要访问的网址早先存储在带有;

的文件中
for link in soup.select("h2 a[href]"):
    blogs.write(link.get("href") + "\n")

并使用

获取
with open("foo") as p:
    return p.readlines()

那么问题是,将它们写入文件的更好方法是什么?如果我不打算用#34; \ n&#34;例如,所有URL都粘在一起。

2 个答案:

答案 0 :(得分:1)

参考Getting rid of \n when using .readlines(),或许可以使用:

static

答案 1 :(得分:1)

你可以使用:

r = requests.get(site.strip('\n'))

而不是:

r = requests.get(site)