网络使用文本文件抓取H1标签的多个URL

时间:2018-08-20 22:43:55

标签: python python-3.x web-scraping beautifulsoup

我在尝试实现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用作该字符串?

2 个答案:

答案 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

现在让我们从url_file.txt中读取网址

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())
        ...