我在尝试实现python 3程序时遇到困难。 我正在尝试做的是Web刮擦打印机页面(例如http://192.168.1.10,例如hp激光打印机),我正在尝试制作一个刮刀,该刮刀将在打印机页面上转到约20个不同的URL并抓取H1标签打印机型号存储在标签中的位置。
我是python的新手,我想使用带有url的txt文件,并使用for循环将url用作变量。
我当前的代码是这样的,并且适用于单个URL,但是我不知道该如何表达我要查找的内容,以找出如何使用文本文件和每一行作为变量。
这是网址文本文件,例如:
http://192.168.1.10
http://192.168.1.11
http://192.168.1.12
...etc one url per line
我的python 3代码如下:
import requests
from bs4 import BeautifulSoup
page = requests.get('http://192.168.1.10/')
soup = BeautifulSoup(page.text, 'html.parser')
page = soup.find(class_='mastheadTitle')
pagehp = page.find_all('h1')
for page in pagehp:
print(page.prettify())
在此处使用行:
page = requests.get('http://192.168.1.10/')
如何将其更改为urls.txt并使其成为循环,以便将每一行中的每个url用作该字符串?
答案 0 :(得分:2)
您可以像这样使用python open
模块:
import requests
from bs4 import BeautifulSoup
url_file = "url_file.txt" #The URL should be written one per line in the url_file.txt file
with open(url_file, "r") as f:
url_pages = f.read()
# we need to split each urls into lists to make it iterable
pages = url_pages.split("\n") # Split by lines using \n
# now we run a for loop to visit the urls one by one
for single_page in pages:
page = requests.get(single_page.strip())
soup = BeautifulSoup(page.text, 'html.parser')
page = soup.find(class_='mastheadTitle')
pagehp = page.find_all('h1')
for page in pagehp:
print(page.prettify())
答案 1 :(得分:0)
with open("urls.txt") as f:
for line in f:
page = requests.get(line.strip())
...