前面断断续续地学习过python基本语法,针对已经热了很久的爬虫,准备捡起python来简单实现一下。
本节主要涉及知识点:urllib2,htmlParser,beautifulSoup4,redis-py,pyMysql等模块的使用,循环、file、socket、cgi编程的基本语法
环境:win64,python3.7.0,pyCharm
1、urllib2
在Python2.x中,分为Urllib库和Urllin2库,Python3.x之后都合并到Urllib库中。此处导入urllib.request模块
import urllib.request
url = 'http://www.cnblogs.com/mvc/AggSite/PostList.aspx'
result = urllib.request.urlopen(url).read()
# print(result)
html = result.decode('utf-8')
# print(html)
2、htmlParser
HTMLParser是python自带的解析模块,此处使用时继承HTMLParser类,自定义相关的解析方法
from html.parser import HTMLParser
class HtmlParseUtil(HTMLParser) :
def handle_starttag(self, tag, attrs):
# super().handle_starttag(tag, attrs)
if tag == 'a':
print("Encountered a start tag:", tag)
# print(_attr('href',attrs))
for item in attrs:
if item[0] == 'href':
print('href:'+item[1])
else:
if tag == 'img':
print("Encountered a start tag:", tag)
for item in attrs:
if item[0] == 'src':
print('src:'+item[1])
def handle_data(self, data):
# super().handle_data(data)
if self.lasttag == 'p':
print('ppp--->'+data.strip())
if self.lasttag == 'a':
print('aaa--->'+data.strip())
引入自定义模块,创建自定义类,调用feed方法
from htmlParseUtil import HtmlParseUtil
parser = HtmlParseUtil()
parser.feed(html)
3、BeautifulSoup4
此模块需要安装,按照网上操作就可以了。这里遇到的一个坑是,安装成功后,在windows dos操作界面可以成功模块,在pyCharm中引入失败。找到的原因是该项目解析器会有一个默认的设置,打开项目配置,选择自己安装的python解析器就可以了。
关于bs4使用,此处推荐一个链接
使用中,主要是调用bs4中的find_all方法解析。
4、redis-py
先前系统中有安装安装redis服务器,此处不太记得清是python自带redis模块还是自己安装的了,但是过程也不复杂。使用中直接引入redis模块即可。
5、pyMysql
先前有安装mysql,这里手动安装pymysql模块,使用时引入pymysql模块。
6、socket
socket编程与其他语言无异,服务端开启侦听,客户端连接,继而收发报文。
7、cgi编程
部署apache服务器,修改配置文件,直接浏览器访问相关py资源。遇到问题为:修改apache配置文件,把权限之类的都放开,仍然无法访问cgi-bin目录下的.py文件