'''python抓取数据方式>>>开始'''
# 第一种:response 获取
data = response.text
# 第二种:requests 获取
data = requests.get(link) data = data.text
# 第三种:urlopen 获取
data = urlopen(link).read()
# Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码
data = BeautifulSoup(data, "html.parser")
# 第四种:xpath 解析获取
data = response.xpath('//div[@id="endText"]').get()
# Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码
data = BeautifulSoup(data, 'html.parser')
常用方法
字符串是否包含
if 'ce' in nice:
去除第一个字符
nice = nice[1:]
去除最后一个字符
nice = nice[:-1]
去除字符串左边的空格
nice.lstrip()
去除字符串右边的空格
nice.rstrip()
数组的长度
length = len(array)
nice转字符串:
nice = ''.join(nice)
或者
nice = repr(nice)
nice转json:
json.loads() #解码python json格式 json.load()# 加载python json格式文件
循环遍历:
for str in list: print(str)if 'nice' in str: continue break
替换字符串中的反斜杠\
str = eval(repr(str).replace('\\', '@'))
字符串str转换成int
int_value = int(str_value)
int转换成字符串
str: str_value = str(int_value)
分割字符串
nice.rsplit(",")
解决urlopen乱码开始
typeEncode = sys.getfilesystemencoding() ##系统默认编码infoencode = chardet.detect(html).get('encoding', 'utf-8') ##通过第3方模块来自动提取网页的编码html = html.decode(infoencode, 'ignore').encode(typeEncode) ##先转换成unicode编码,然后转换系统编码输出
延时抓取
import time time.sleep(3)
获取当天时间
import time time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
时间戳转时间格式(时间戳的长度为10位才可以,否则会报此异常:OSError: [Errno 22] Invalid argument)
timeArray = time.localtime(upload_time) upload_time = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)# 若时间戳的长度为13位,则需要变成10位的timeArray = time.localtime(int(upload_time/1000))
为空判断
if str is None or str == '':continue
截取字符串
str = str[0:4]
多个if判断
if 'pic-group clear' == divclass: print('4张图')elif 'pic img-do left' == divclass: print('1张图')else: print('无图')
获取script的内容
soup = BeautifulSoup(html, "html.parser") scripts = soup.select("script") # CSS 选择器
python爬虫去除网页中的script结构
import re clear = re.compile(']*>[^<]*', re.I) content = clear.sub("", content)# 去除id="content-ad"的divclear = re.compile(r'(.*)', re.S) content = clear.sub("", content)