【发布时间】:2019-07-03 01:43:31
【问题描述】:
我正在尝试抓取文本文件“tastyrecipes”中列出的网站列表,我目前有一个返回 url 的 for 循环,但不知道如何将 url 放入 requests.get () 不会出现 404 错误。网站单独返回 200 状态代码,查看 HTML 没有问题。
我已经尝试过字符串格式化,我做了
with open('tastyrecipes', 'r') as f:
for i in f:
source = requests.get("{0}".format(i))
但这并没有改变结果。
with open('tastyrecipes', 'r') as f:
new_file = open("recipecorpus.txt", "a+")
for i in f:
source = requests.get(i)
content = source.content
soup = BeautifulSoup(content, 'lxml')
list_object = soup.find('ol', class_='prep-steps list-unstyled xs-text-3')
method = list_object.text
new_file.write(method)
new_file.close()
我预计 i 允许对文本文件中的 url 进行迭代抓取,但它返回 404 错误。
【问题讨论】:
-
您能否修复缩进和引用,以及创建一个不需要某些我们不知道其内容的文件的Minimal, Complete, and Verifiable example 以帮助调试您的问题?另外,您是否尝试在请求之前放置一个调试语句,并在请求之前查看字符串设置为什么?
-
我不确定我的缩进和引用有什么问题,我尝试在我的完整代码上方创建一个最小示例。我认为文件的内容并不重要,正如我所说,它只是一个 url 列表。我没有放调试语句,因为我必须查找如何做到这一点
-
鉴于 HHTP 请求的性质,该站点很可能拒绝您的快速连接尝试或限制您的 IP 的速率。也许考虑在你的代码中添加一些
time.sleeps,看看性能是否有所提高 -
@JonathanDyke 我看到您修复了缩进,并且引用我的意思是
('tastyrecipes', 'r'')行包含一个额外的引用。此外,如果您不告诉我们或向我们展示,我们也不可能知道文件中的内容或格式。 -
如果一个 URL 返回 200,另一个返回 404,则这两个 URL 不同。
标签: python