python - Python 将文件中的列表传递给 requests.get()
问题描述
我正在尝试抓取新闻文章的语料库进行分析。我有一个带有 URL 列表的文本文件,我正在尝试将这些传递给请求,以便可以使用 BeautifulSoup 抓取页面。我可以从文本文件中提取网址。但是,我没有正确地将输出传递给 requests.get()。当我给 requests.get() 一个明确的 url 时,脚本可以正常工作。如何正确地将文本文件中的链接列表传递给 requests.get()?这是我的工作。
import requests
from bs4 import BeautifulSoup
r = requests.get("https://examplewebsite.org/page1")
coverpage = r.content
soup = BeautifulSoup(coverpage, 'html5lib')
file = open("output.txt", "w")
file.write("ITEM:")
paragraphs = soup.find_all("p")[11:-10]
for paragraph in paragraphs:
file.write(paragraph.get_text())
file.write("\n")
file.write("\n")
file.close()
但是,当我尝试从作为链接列表的文本文件中读取时,我将链接传递给 requests.get() 的方式似乎存在问题。每行一个 URL,链接的文本文件列表看起来像
https://examplewebsite.org/page1
https://examplewebsite.org/page2
https://examplewebsite.org/page3
https://examplewebsite.org/page4
这是我试图通过链接列表工作的方式。
f = open('article-list.txt', 'r')
urls = list(f)
for url in urls:
import requests
from bs4 import BeautifulSoup
r = requests.get(url)
coverpage = r.content
soup = BeautifulSoup(coverpage, 'html5lib')
file = open("output.txt", "w")
file.write("ITEM:")
paragraphs = soup.find_all("p")[11:-10]
for paragraph in paragraphs:
file.write(paragraph.get_text())
file.write("\n")
file.write("\n")
print(paragraph.get_text())
file.close()
我得到的是一个错误说
AttributeError: 'NoneType' object has no attribute 'get_text'
这表明我没有正确传递请求。如果我只是简单地交换一个明确定义的 url,比如“ https://somewebsite.org/page1 ”,那么脚本就会工作并将段落写入文件。然而,当我print(urls)
在顶部放置一个语句并为 requests.get() 提供一个明确的链接以使其不会中断时,我得到了一个 url 列表。但是,该列表的格式为:
[' http://examplewebsite.org/page1 \n', ' http://examplewebsite.org/page2 \n', ' http://examplewebsite.org/page3 \n']
我认为\n是问题所在。我尝试将所有链接一起运行,但没有成功。同样为了可读性,我更喜欢将每个链接放在单独的行上。任何有关如何解决此问题的建议将不胜感激。谢谢。
解决方案
为了像在文件中一样获取列表,这一行
urls = list(f)
应该是这样的
urls = f.readlines()
它将返回 txt 文件中每一行的数组,不带任何“\n”
推荐阅读
- javascript - 如何将 HTML 元素添加到字符串并即时为我的组件创建元素?
- python-3.x - 算法缩进错误的QGIS python脚本
- c# - 鼠标悬停控制并显示其句柄
- asp.net - 防止作为其他会话值列表的会话重写
- android - 互联网连接不可用时如何调用警报框?
- asp.net - 用户点击链接时如何显示文本框?
- javascript - 我可以使用 CSS 替换我的 SVG viewBox 属性吗?
- hive - 外部兽人和克劳德拉的蜂巢的兼容性问题
- php - PHP date() 增加一个小时返回值
- python - 我的代码库何时足够大以证明使用 Pycharm PythonDebugger 扩展是合理的?