I\'m trying to search a webpage using regular expressions, but I\'m getting the following error:
TypeError: can\'t use a string pattern on a bytes-lik
You just need to decode the response, using the Content-Type
header typically the last value. There is an example given in the tutorial too.
output = response.decode('utf-8')
With requests:
import requests
response = requests.get(URL).text
after you make a request req = urllib.request.urlopen(...)
you have to read the request by calling html_string = req.read()
that will give you the string response that you can then parse the way you want.
I had the same issues for the last two days. I finally have a solution.
I'm using the info()
method of the object returned by urlopen()
:
req=urllib.request.urlopen(URL)
charset=req.info().get_content_charset()
content=req.read().decode(charset)
As for me, the solution is as following (python3):
resource = urllib.request.urlopen(an_url)
content = resource.read().decode(resource.headers.get_content_charset())
urllib.urlopen(url).headers.getheader('Content-Type')
Will output something like this:
text/html; charset=utf-8