我试图从许多正在返回的网址中提取特定文本。 我正在使用带有请求的Python 2.7和BeautifulSoup。
原因是我需要找到最新的URL,可以用最高的数字来识别" DF_7" 7是来自以下网址的最高。这个网址将被下载。 请注意,每天都会添加新文件,这就是我需要检查编号最高的文件的原因。
一旦我在网址列表中找到最高编号,我就需要加入 这个" https://service.rl360.com/scripts/customer.cgi/SC/servicing/"到编号最高的网址。 最终产品应如下所示。 https://service.rl360.com/scripts/customer.cgi/SC/servicing/downloads.php?Reference=DF_7&SortField=ExpiryDays&SortOrder=Ascending
每次使用DF_递增时,网址看起来都是这样的
这是正确的做法吗?如果是这样我该怎么做呢。
由于
import base
import requests
import zipfile, StringIO, re
from lxml import html
from bs4 import BeautifulSoup
from base import os
from django.conf import settings
# Fill in your details here to be posted to the login form.
payload = {
'USERNAME': 'xxxxxx',
'PASSWORD': 'xxxxxx',
'option': 'login'
}
headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'}
# Use 'with' to ensure the session context is closed after use.
with requests.Session() as s:
p = s.post('https://service.rl360.com/scripts/customer.cgi?option=login', data=payload)
# An authorised request.
r = s.get('https://service.rl360.com/scripts/customer.cgi/SC/servicing/downloads.php?Folder=DataDownloads&SortField=ExpiryDays&SortOrder=Ascending', stream=True)
content = r.text
soup = BeautifulSoup(content, 'lxml')
table = soup.find('table')
links = table.find_all('a')
print links
答案 0 :(得分:1)
你可以直接到班级的最后一个链接" tableid"并按照以下方式打印它的href值:
href = soup.find_all("a", {'class':'tabletd'})[-1]['href']
base = "https://service.rl360.com/scripts/customer.cgi/SC/servicing/"
print (base + href)