0

我正在使用 Python3,并且在我的代码中出现以下错误。尝试下载pdf并存储在本地目录中

r_l = 'https://www.ccc.com'
class Data:

    def getlk(self, url):
        all_links = []
        page = requests.get(url)
        soup = BeautifulSoup(page.text, 'html.parser')
        for href in soup.find_all(class_='omrlist'):
            all_links.append(root_url + href.find('a').get('href'))
        return all_links

    def getmth_lk(self, ylk):
        rpLk = []
        for url in ylk:
            links = self.getlk(url)
            reportLinks.append(links)


            for url_ in links:
                if ".pdf" in url_:
                    if "Annual" not in url_:
                        lastindex = url_.rfind('/')
                        strlen = len(url_)
                        filename = url_[lastindex:strlen].replace("/", "")

                        file = pathlib.Path('/home/' + filename)
                        if not file.exists():
                            urllib.request.urlretrieve(rpLk, str(filename))


if __name__ == '__main__':
    obj = Data()
    yLk = obj.getlk(r_l + '/oil/reports/')
    mth_lk = obj.getmth_lk(yLk)

我尝试了上面的代码,但错误来了

Traceback (most recent call last):
  File "/home/dwnpdf-to-dir.py", line 248, in <module>
    mth_lk = obj.getmth_lk(yLk)
  File "/home/dwnpdf-to-dir.py", line 228, in getmth_lk
    urllib.request.urlretrieve(rpLk, str(filename))
  File "/usr/lib/python3.5/urllib/request.py", line 186, in urlretrieve
    url_type, path = splittype(url)
  File "/usr/lib/python3.5/urllib/parse.py", line 861, in splittype
    match = _typeprog.match(url)
TypeError: expected string or bytes-like object

上面的错误来了所以,请指导我克服这个错误

4

1 回答 1

0

正如错误中所说,urlretrieve将 a 作为第一个位置参数string or bytes-like object。然而rpLk是一个列表。

你不应该宁愿url_作为论据吗?

如果您还没有下载文件,您是否正在尝试下载?我认为你应该urllib.request.urlopen改用。

于 2019-01-09T14:01:31.093 回答