python 版本 3.6.1
1.正则表达式
http://krzer.com/2015/11/29/Python3-spider-start/
常用方法:findall,search,sub
常用符号:点号,星号,问号与括号
findall: 匹配所有符合规律的内容,返回包含结果的列表
Search:匹配并提取第一个符合规律的内容,返回一个正则表达式对象(object)
Sub:替换符合规律的内容,返回替换后的值
常用技巧
import re #导入re库,之后调用re库需要re.
from re import #导入re库,之后调用re库不需要re.
from re import findall,search,sub,S
不需要complie #一般情况下不建议使用complie
使用d+匹配纯数字
# Author: # title: import re # .*:贪心算法 #.*的使用举例 secret_code = 'hadkfalifexxhaixxfasdjifja134xxnanxx23345sdfxxuniversityxx8dfse' b = re.findall('xx.*xx',secret_code) print(b) # .*?:非贪心算法 c = re.findall('xx.*?xx',secret_code) print(c) # ():括号内的数据作为结果返回 d = re.findall('xx(.*?)xx',secret_code) print(d)
2.爬虫入门
给文件加入头信息,用以模拟浏览器访问
用python抓取指定网页
实现可变网站的访问
将网页内容保存
1)给文件加入头信息,用以模拟浏览器访问
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers = {
'Connection': 'Keep-Alive',
'Accept': 'text/html, application/xhtml+xml, */*',
'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko'
2)用python抓取指定网页
import urllib.request
url= "http://www.baidu.com"
data = urllib.request.urlopen(url).read()#
data = data.decode('UTF-8')
print(data)
3.urllib_request使用
# Author: # title: # import urllib.request # url= "http://www.baidu.com" # data = urllib.request.urlopen(url).read()# # data = data.decode('UTF-8') # print(data) # 导入的时候 ,一定为 “urllib.request” , # 如果 导入的为 “urllib” 则 在调用 urllib.request.urlopen(url).read() 会报错(AttributeError: module 'urllib' has no attribute 'request') import urllib.request # url 中的 “http://” 一定要加入,否则请求会有问题 url="http://www.baidu.com" # urllib.request.urlopen(url)官方文档返回一个 http.client.HTTPResponse 对象, # 这个对象又用到的read()方法;返回数据;这个函数返回一个 http.client.HTTPResponse 对象, # 这个对象又有各种方法, 比如我们用到的read()方法。 data=urllib.request.urlopen(url).read() data=data.decode("UTF-8") print(data)
4.动态拼接url
# Author: # title: import urllib import urllib.request data = {} data['word'] = 'python spider' url_values = urllib.parse.urlencode(data) url = "http://www.baidu.com/s?" full_url = url + url_values a = urllib.request.urlopen(full_url) data = a.read() data = data.decode('UTF-8') # data是一个字典, 然后通过urllib.parse.urlencode() # 来将data转换为 ‘word=python+spider’的字符串, 最后和url合并为full_url # print(data) ##打印出网址: # a.geturl() print(a)
5.保存图片
import urllib
import urllib.request
picurl="https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=1687057275,747988600&fm=58&u_exp_0=1120023660,414683190&fm_exp_0=86&bpow=1000&bpoh=1500"
pic = urllib.request.urlopen(picurl)
jpgpic = pic.read()
#首先你得有个pic文件夹
j=1
with open('pic/'+str(j)+'.jpg',"wb") as fp:
print('now downloading:')
# 写入文件
fp.write(jpgpic)
fp.close()
j=j+1