python3爬虫知识积累

原文: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));

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值