9.3 域名解析与网页爬虫

Posted Avention

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9.3 域名解析与网页爬虫相关的知识,希望对你有一定的参考价值。

  Python 3.x 标准库 urllib提供了 rullib.request、urllib.response、urllib.parse 和 urllib.error 4个模块,很好地支持了网页内容读取功能。

  下面的代码演示了如何读取并显示指定网页的内容。

1 import urllib.request
2 
3 fp = urllib.request.urlopen(rhttp://www.baidu.com)
4 
5 print(fp.read().decode())     #读取了返回html
6 
7 fp.close()

 

  下面的代码演示了如何使用GET方法读取并显示指定URL的内容。

1 import urllib.request
2 import urllib.parse
3 
4 params = urllib.parse.urlencode({spam:1,eggs:2,bacon:0})
5 url = rhttp://www.baidu.com%s%params
6 with urllib.request.urlopen(url) as f:
7     print(f.read().decode(utf-8))

 

  下面的代码演示了如何使用POST方法提交参数并读取指定页面内容。

1 import urllib.request
2 import urllib.parse
3 
4 data = urllib.parse.urlencode({spam:1,eggs:2,bacon:0})
5 data = data.encode(ascii)
6 with urllib.request.urlopen(rhttp://www.baidu.com,data) as f:
7     print(f.read().decode(utf-8))

 

  下面的代码演示了如何使用HTTP代理访问指定网页。

1 import urllib.request
2 
3 
4 proxies = {heet:http://proxy.example.com:8080/}
5 opener = urllib.request.FancyURLopener(proxies)
6 with opener.open(http://www.python.ory) as f:
7     f.read().decode(utf-8)

 

  在IDLE或者Python程序中使用下面的代码调用浏览器打开指定网页:

1 import webbrowser
2 
3 webbrowser.open(www.baidu.com)

 

  最后,标准库urllib.parse import urlparse 提供了域名解析的功能,支持RUL的拆分与合并以及相对地址到绝对地址的转换。

 1 from urllib.parse import urlparse
 2 
 3 o = urlparse(http://www.cwi.nl:80/%7Eguido/Python.html)
 4 print(o.port)        #80
 5 print(o.hostname)    #www.cwi.nl
 6 
 7 print(o)   #ParseResult(scheme=‘http‘, netloc=‘www.cwi.nl:80‘, path=‘/%7Eguido/Python.html‘, params=‘‘, query=‘‘, fragment=‘‘)
 8 
 9 print(urlparse(www.cwi.nl:80/%7Eguido/Python.html))  #ParseResult(scheme=‘www.cwi.nl‘, netloc=‘‘, path=‘80/%7Eguido/Python.html‘, params=‘‘, query=‘‘, fragment=‘‘)
10 
11 
12 from urllib.parse import urljoin
13 print(urljoin(http://www.cwi.nl:80/%7Eguido/Python.html,FAQ.html))   #http://www.cwi.nl:80/%7Eguido/FAQ.html
14 print(urljoin(http://www.cwi.nl:80/%7Eguido/Python.html,//www.python.org/%7Eguido))   #http://www.python.org/%7Eguido
15 
16 from urllib.parse import urlsplit
17 url = rhttps://docs.python.org/3/library/urllib.parse.html
18 r1=urlsplit(url)
19 print(r1)        #SplitResult(scheme=‘https‘, netloc=‘docs.python.org‘, path=‘/3/library/urllib.parse.html‘, query=‘‘, fragment=‘‘)
20 print(r1.geturl()) #https://docs.python.org/3/library/urllib.parse.html

以上是关于9.3 域名解析与网页爬虫的主要内容,如果未能解决你的问题,请参考以下文章

爬虫实现:根据IP地址反查域名

Python 利用爬虫爬取网页内容 (div节点的疑惑)

爬虫第三课:互联网中网页的解析

Python爬虫——DNS解析缓存

爬虫学习——网页解析器Beautiful Soup

关于爬虫中常见的两个网页解析工具的分析 —— lxml / xpath 与 bs4 / BeautifulSoup