python3 爬虫 随笔-1

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
原文地址:https://www.cnblogs.com/luoyeyue/p/7521610.html