【问题标题】:Getting Error "TypeError: expected string or bytes-like object"出现错误“TypeError:预期的字符串或类似字节的对象”
【发布时间】:2019-01-09 22:01:31
【问题描述】:

我正在使用 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

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

【问题讨论】:

    标签: python byte typeerror


    【解决方案1】:

    正如错误中所说,urlretrievestring or bytes-like object 作为第一个位置参数。但是rpLk 是一个列表。

    您不应该将url_ 作为参数传递吗?

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

    【讨论】:

    • 我尝试了您提到的内容,但出现以下错误.. Traceback(最近一次调用最后一次):文件“/home/dwnpdf-to-dir.py”,第 253 行,在 mth_lk = obj.getmth_lk(yLk) 文件“/home/dwnpdf-to-dir.py”,第 233 行,在 getmth_lk urllib.request.urlopen(rpLk, str(filename)) 文件“/usr/lib/python3.5 /urllib/request.py”,第 163 行,在 urlopen 返回 opener.open(url, data, timeout) 文件“/usr/lib/python3.5/urllib/request.py”,第 455 行,在打开 req.data = data AttributeError: 'list' 对象没有属性 'data'
    • 阅读整个答案。 rpLk 仍然是一个列表。我说尝试通过url_ 代替
    猜你喜欢
    • 1970-01-01
    • 2017-09-29
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 2017-03-14
    • 1970-01-01
    相关资源
    最近更新 更多