我有一个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都粘在一起。
答案 0 :(得分:1)
参考Getting rid of \n when using .readlines(),或许可以使用:
static
答案 1 :(得分:1)
你可以使用:
r = requests.get(site.strip('\n'))
而不是:
r = requests.get(site)