【发布时间】:2019-01-29 21:29:30
【问题描述】:
我整天都在尝试下载一些 csv 文件,但没有成功。 我有一个我希望我的脚本访问的 url 列表,然后从一些锚点中提取 href 属性检查它是否匹配某些正则表达式模式并将它们下载到文件夹“example.com/*.csv”
我正在使用 macOs,python 3.7.2,我只在这台机器上尝试过,但一旦我让它工作,我计划将它移到 linux 机器上。我从 selenium 和 geckodriver 开始,然后我发现我真的不需要它,可以通过 BeautifulSoup + requests 来实现。
正如我所说,我整天都在修改它,但没有运气,这是最终版本,取自这里的另一个线程:
import requests
from bs4 import BeautifulSoup as bs
from urllib.request import urlopen
_URL = 'http://example.com/words'
_URLD = str(_URL.strip('words'))
# functional
r = requests.get(_URL)
soup = bs(r.text)
urls = []
names = []
for i, link in enumerate(soup.findAll('a')):
_FULLURL = _URLD + link.get('href')
if _FULLURL.endswith('.csv'):
urls.append(_FULLURL)
names.append(soup.select('a')[i].attrs['href'])
print(_FULLURL)
requests.get(_FULLURL)
根据我现在所拥有的,我可以看到控制台打印了所有 url,但无法确定在哪里添加正则表达式模式,因此只能下载具有以下模式的 url。
linkRegex = re.compile(r'/name-[0-9]+-[0-9]+-[0-9]+-[0-9]+.csv')
然后将 csv 文件实际写入 'example.com/*.csv'
【问题讨论】:
-
也许我没有得到这个问题:你在找
print(linkRegex .search(_FULLURL).group(0))吗?
标签: python regex beautifulsoup python-requests