原文:python3网络爬虫一《使用urllib.request发送请求》
urllib.request.urlopen()发送请求;
urllib.request.Request()伪装浏览器的;
原文:正则表达式速查表
原文:python3 爬虫入门(三)正则表达式基本使用(有实例)
原文:xpath与正则表达式在文本数据提取时该如何选择?(xpath爬取csdn实例)
正则表达式实例:
import re
import urllib.request
url="http://www.58pic.com/piccate/3-0-0-1.html"
html=urllib.request.urlopen(url).read()
file=str(html)
pat="http:.*?\.com"
results=re.compile(pat).findall(file)
for i in results:
print(i)
正则、xpath、pyquery对文本提取速度比较(正则杀出重围):
import re
import time
import lxml.html
import urllib.request
f=urllib.request.urlopen('http://baidu.com')
resp=f.read()
resp1=str(resp)
t1=time.clock()
for x in range(1000):
title=re.compile('<title>(.*?)</title>').findall(resp1)
print ("正则用时:",time.clock()-t1)
content=resp.decode('utf-8')
dom=lxml.html.document_fromstring(content)
t2=time.clock()
for x in range(1000):
for item in dom.xpath('//title'):
title=item.text_content()
print ("dom.xpath用时:",time.clock()-t2)
from lxml import etree
doc = etree.HTML(content)
t3=time.clock()
for x in range(1000):
for path in doc.xpath('//title'):
title=path.text
print ("doc.xpath用时:",time.clock()-t3)
from pyquery import PyQuery
page = PyQuery(content,parser='html')
t4=time.clock()
for x in range(1000):
title=page('title').text()
print ("pyquery用时:",time.clock()-t4)
xpath实例:
python3中xpath的使用快速入门_桃子&starfish的博客-CSDN博客
from lxml import etree
import requests
import re
url = 'http://www.58pic.com/piccate/3-0-0-1.html'
response = requests.get(url)
response.encoding = 'gbk'
html = response.text
root = etree.HTML(html)
node_list = root.xpath("//a[@class='thumb-box']/img/@src")
for i in range(0,len(node_list)):
print(i,node_list[i])
中文乱码问题:
import urllib.request
file=urllib.request.urlopen('http://www.sina.com.cn/mid/search.shtml?range=all&c=news&q=%E5%8D%81%E4%B9%9D%E5%A4%A7&from=home&ie=utf-8').read().decode('utf-8')
file=str(file)
print(file)
如果仍然乱码.decode('gbk'),结果应返回树形结构;
python3 把\u开头的unicode转中文,把str形态的unicode转中文:
python3 把\u开头的unicode转中文,把str形态的unicode转中文_junzibuqi124的博客-CSDN博客_python \u673a
1,mysql查看数据库所占空间大小(只需要改数据库名称即可)
select concat(round(sum(DATA_LENGTH)/1024/1024+sum(INDEX_LENGTH)/1024/1024,5),'M')as date from information_schema.tables where table_schema='数据库名';
concat()表示字符串的拼接;
round(,n)表示计算后保留n位有效数字;本例为n位有效数字;
sum(DATA_LENGTH) 表示所有内容所占空间大小单位字节 除以 1024*1024换算为‘M’为单位;
2,数据去重:
采集时去重;newslink为判断依据;
为表中字段创建唯一约束
特殊字段要指明判断的长度;
ALTER TABLE comment ADD unique(content(40));