Skip to content

TypeError: Can't convert 'bytes' object to str implicitly #98

Description

@hnykda

Hello,

I was getting this error when trying:

a = newspaper.Article('http://answers.microsoft.com/en-us/windowslive/forum/moviemaker-files/corrupted-file/79292646-8d26-42a4-a9a3-742a101f70b3')
a.download()
a.parse()

and this was error:

/venv/lib/python3.4/site-packages/newspaper/article.py in parse(self)
    208 
    209         # Before any computations on the body, clean DOM object
--> 210         self.doc = document_cleaner.clean(self.doc)
    211 
    212         text = ''

/home/dan/edu/uni/projekty/bs/nourish/venv/lib/python3.4/site-packages/newspaper/cleaners.py in clean(self, doc_to_clean)
     65         doc_to_clean = self.remove_nodes_regex(doc_to_clean, self.twitter_re)
     66         doc_to_clean = self.clean_para_spans(doc_to_clean)
---> 67         doc_to_clean = self.div_to_para(doc_to_clean, 'div')
     68         doc_to_clean = self.div_to_para(doc_to_clean, 'span')
     69         return doc_to_clean

/home/dan/edu/uni/projekty/bs/nourish/venv/lib/python3.4/site-packages/newspaper/cleaners.py in div_to_para(self, doc, dom_type)
    225                 bad_divs += 1
    226             elif div is not None:
--> 227                 replaceNodes = self.get_replacement_nodes(doc, div)
    228                 div.clear()
    229                 for c, n in enumerate(replaceNodes):

/home/dan/edu/uni/projekty/bs/nourish/venv/lib/python3.4/site-packages/newspaper/cleaners.py in get_replacement_nodes(self, doc, div)
    195                 kid_text = self.parser.getText(kid)
    196                 self.replace_walk_left_right(kid, kid_text, replacement_text,
--> 197                                              nodes_to_remove)
    198             else:
    199                 nodes_to_return.append(kid)

/home/dan/edu/uni/projekty/bs/nourish/venv/lib/python3.4/site-packages/newspaper/cleaners.py in replace_walk_left_right(self, kid, kid_text, replacement_text, nodes_to_remove)
    158                     and self.parser.getAttribute(
    159                         prev_node, 'grv-usedalready') != 'yes':
--> 160                 outer = " " + self.parser.outerHtml(prev_node) + " "
    161                 replacement_text.append(outer)
    162                 nodes_to_remove.append(prev_node)

TypeError: Can't convert 'bytes' object to str implicitly

this is an easy fix, other lines are OK (e.g. line 173).

From this

160                 outer = " " + self.parser.outerHtml(prev_node) + " "

to this:

160                 outer = " " + self.parser.outerHtml(prev_node).decode('utf-8') + " "

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions