天眼查新方式信息爬取
#本文通过新的方式爬取突破
由于公司列表页信息很少反爬,除了公司名称其他信息都没有,所以可以取巧提取注册时间注册资本信息
访问过多过快也会封,测试可以通过随机UA突破
另外公司具体信息详情页可能不同公司展示xpath位置不一样,所以用re
另外经营范围下载回来出现开头的乱码,#xx 的格式其实是unicode,用HTMLParser库解析 #最后实现结果:基本3秒能查出5家相关企业具体公司信息 **更新下,天眼查有更新,现在可以通过企业名和工商号或者纳税号进行查询
import requests
from lxml import etree
import random
import re
# import HTMLParser
from html.parser import HTMLParser
proxy = {
"http": 'http://125.70.13.77:8080',
"http": 'https://183.6.129.212:41949'
}
USER_AGENTS = [
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)",
"Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
"Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)",
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)",
"Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)",
"Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)",
"Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0",
"Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5",
"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20",
"Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52",
]
dd=random.choice(USER_AGENTS)
print(dd)
headers={
"Referer": "https://www.baidu.com/",
"User-Agent": "%s"%dd
}
def down_load(url):
cc=requests.get(url=url,headers=headers,proxies=proxy)
# cc=etree.HTML(cc)
# cc.encode("utf-8").decode("utf-8")
cc.encoding="utf-8"
return cc.text
i=input("请输入企业相关信息(企业名、工商号或纳税人号):")
first_url="https://m.tianyancha.com/search?key=%s"%i
# first_url="http://www.baidu.com"
a=down_load(first_url)
a=etree.HTML(a)
detail_url=a.xpath('//div[contains(@class,"col-xs-10")]/a/@href')
boss=a.xpath('//div[@class="search_row_new_mobil"]//a/text()')
the_registered_capital=a.xpath('//div[@class="search_row_new_mobil"]/div/div[2]/span/text()')
the_registered_time=a.xpath('//div[@class="search_row_new_mobil"]/div/div[3]/span/text()')
# print(detail_url,boss,the_registered_capital,the_registered_time)
gs=[]
gs1={}
for ii in range(len(boss)):
aa=down_load(detail_url[ii])
bb=etree.HTML(aa)
company=bb.xpath('//div[@class="over-hide"]/div/text()')[0]
industry = re.findall("行业:(.*?)
",aa,re.S)[0]
the_enterprise_type = re.findall("企业类型:
(.*?) ",aa,re.S)[0]
registration_number = re.findall("工商注册号:
(.*?) ",aa,re.S)[0]
organization_code = re.findall("组织结构代码:
(.*?) ",aa,re.S)[0]
credit_code = re.findall("统一信用代码:
(.*?) ",aa,re.S)[0]
business_period = re.findall("经营期限:
(.*?) ",aa,re.S)[0]
# approval_date = aa.xpath('/html/body/div[3]/div[1]/div[7]/div/div[11]/span[2]/text()')[0]
registration_authority =re.findall("登记机关:
(.*?) ",aa,re.S)[0]
registered_address =re.findall("注册地址:
(.*?) ",aa,re.S)[0]
scope_of_business =re.findall('
(.*?) ',aa,re.S)[0]
h=HTMLParser() #xx;‘ 的格式其实是unicode,后面跟的是unicode字符的十进制值,解决字体这样的方法
scope_of_business=h.unescape(scope_of_business)
new=["公司名:"+company,"法人:"+boss[ii],"注册时间:"+the_registered_time[ii],"注册资本:"+the_registered_capital[ii],"企业类型:"+the_enterprise_type,"工商注册号:"+registration_number,"组织结构代码:"+organization_code,"统一信用代码:"+credit_code,"经营年限:"+business_period,"登记机关:"+registration_authority,"注册地址:"+registered_address,"经营范围:"+scope_of_business]
# print(new)
gs1[ii+1]=["公司名:"+company,"法人:"+boss[ii],"注册时间:"+the_registered_time[ii],"注册资本:"+the_registered_capital[ii],"企业类型:"+the_enterprise_type,"工商注册号:"+registration_number,"组织结构代码:"+organization_code,"统一信用代码:"+credit_code,"经营年限:"+business_period,"登记机关:"+registration_authority,"注册地址:"+registered_address,"经营范围:"+scope_of_business]
gs.append(new)
print(gs)
# print(gs1)
也可以参考看下上篇:通过scrapy结合selenium抓取天眼查
后续通过tkinter制作的可视化界面
import tkinter as tk
import requests
from lxml import etree
import random
import re
from html.parser import HTMLParser
window=tk.Tk()
window.title("公司信息查询器")
window.geometry("790x550+500+200")
l=tk.Label(window,text="企业名、工商号或纳税人号:",font="微软雅黑 11",height=2)
l.grid()
l1=tk.Label(window,text="这就是为你查询的结果:",font="微软雅黑 11",height=2)
l1.grid()
var=tk.StringVar()
e=tk.Entry(window,width=62)
e.grid(row=0,column=1)
e1=tk.Text(window,height=30)
# e1=tk.Entry(window,textvariable=var,width=60,)
e1.grid(row=2,column=1)
def click():
content=e.get()
proxy = {
"http": 'http://125.70.13.77:8080',
"http": 'https://183.6.129.212:41949'
}
USER_AGENTS = [
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)",
"Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
"Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)",
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)",
"Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)",
"Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)",
"Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0",
"Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5",
"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20",
"Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52",
]
dd = random.choice(USER_AGENTS)
headers = {
"Referer": "https://www.baidu.com/",
"User-Agent": "%s" % dd
}
def down_load(url):
cc = requests.get(url=url, headers=headers, proxies=proxy)
# cc=etree.HTML(cc)
# cc.encode("utf-8").decode("utf-8")
cc.encoding = "utf-8"
return cc.text
# i = input("请输入企业相关信息(企业名、工商号或纳税人号):")
first_url = "https://m.tianyancha.com/search?key=%s" % content
# first_url="http://www.baidu.com"
a = down_load(first_url)
a = etree.HTML(a)
detail_url = a.xpath('//div[contains(@class,"col-xs-10")]/a/@href')
boss = a.xpath('//div[@class="search_row_new_mobil"]//a/text()')
the_registered_capital = a.xpath('//div[@class="search_row_new_mobil"]/div/div[2]/span/text()')
the_registered_time = a.xpath('//div[@class="search_row_new_mobil"]/div/div[3]/span/text()')
# print(detail_url,boss,the_registered_capital,the_registered_time)
gs = []
gs1 = {}
for ii in range(len(boss)):
aa = down_load(detail_url[ii])
bb = etree.HTML(aa)
company = bb.xpath('//div[@class="over-hide"]/div/text()')[0]
industry = re.findall("行业:(.*?)
", aa, re.S)[0]
the_enterprise_type = re.findall("企业类型:(.*?) ", aa, re.S)[0]
registration_number = re.findall("工商注册号:(.*?) ", aa, re.S)[0]
organization_code = re.findall("组织结构代码:(.*?) ", aa, re.S)[0]
credit_code = re.findall("统一信用代码:(.*?) ", aa, re.S)[0]
business_period = re.findall("经营期限:(.*?) ", aa, re.S)[0]
# approval_date = aa.xpath('/html/body/div[3]/div[1]/div[7]/div/div[11]/span[2]/text()')[0]
registration_authority = re.findall("登记机关:(.*?) ", aa, re.S)[0]
registered_address = re.findall("注册地址:(.*?) ", aa, re.S)[0]
scope_of_business = re.findall('(.*?) ', aa, re.S)[0]
h = HTMLParser() # xx;‘ 的格式其实是unicode,后面跟的是unicode字符的十进制值,解决字体这样的方法
scope_of_business = h.unescape(scope_of_business)
new = [ii+1,"公司名:" + company, "法人:" + boss[ii], "注册时间:" + the_registered_time[ii],
"注册资本:" + the_registered_capital[ii], "企业类型:" + the_enterprise_type, "工商注册号:" + registration_number,
"组织结构代码:" + organization_code, "统一信用代码:" + credit_code, "经营年限:" + business_period,
"登记机关:" + registration_authority, "注册地址:" + registered_address, "经营范围:" + scope_of_business]
gs1[ii + 1] = ["公司名:" + company, "法人:" + boss[ii], "注册时间:" + the_registered_time[ii],
"注册资本:" + the_registered_capital[ii], "企业类型:" + the_enterprise_type,
"工商注册号:" + registration_number, "组织结构代码:" + organization_code, "统一信用代码:" + credit_code,
"经营年限:" + business_period, "登记机关:" + registration_authority, "注册地址:" + registered_address,
"经营范围:" + scope_of_business]
e1.insert("end", new)
e1.insert("end", "\n\n") #换行骚操作
# gs.append(new)
# print(gs)
# bb=response["translateResult"][0][0]["tgt"]
# print(bb)
# print(type(bb))
# e1.insert("end",gs)
b=tk.Button(window,text="点击查询",command=click,width=10,font="微软雅黑 12")
b.grid(row=6,column=0)
b1=tk.Button(window,text="退出",command=window.quit,width=10,font="微软雅黑 12")
b1.grid(row=6,column=1)
window.mainloop()
后续有目标的爬取1000来家公司信息,进行了一定的改造
1.padas转化成list—
#padas 转化成list
content=pd.read_csv(r"C:\Users\Administrator\Desktop\5005.csv",encoding="utf-8").values.tolist()
2.大批量数据程序的异常判断问题 try,不然程序中途爬的全部丢失重头来过,主要两个方面去重和断点续爬
import requests
from lxml import etree
import random
import re
import csv
import pandas as pd
# from multiprocess import Pool
# import HTMLParser
from html.parser import HTMLParser
from fake_useragent import UserAgent
# ua=UserAgent()
proxy = {
"https": 'https://114.116.10.21:3128',
"http": 'http://47.105.151.97:80',
"https": 'https://113.200.56.13:8010',
"https": 'https://14.20.235.220:9797',
"https": 'https://119.31.210.170:7777',
"http": 'http://221.193.222.7:8060',
"http": 'http://115.223.222.206:9000',
"http": 'http://106.12.3.84:80',
"http": 'http://49.81.125.62:9000',
"http": 'http://119.29.26.242:8080',
"http": 'http://118.24.98.96:9999',
"http": 'http://183.129.207.84:52264',
"http": 'http://121.10.71.82:8118',
"http": 'http://113.16.160.101:8118',
}
USER_AGENTS = [
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)",
"Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
"Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)",
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)",
"Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)",
"Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)",
"Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0",
"Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5",
"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20",
"Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52",
]
dd=random.choice(USER_AGENTS)
headers={
"Referer": "https://www.baidu.com/",
"User-Agent": "%s"%dd,
# "User-Agent":ua.random
}
def down_load(url):
cc=requests.get(url=url,headers=headers,proxies=proxy,verify=True) #,proxies=proxy,verify=True
# cc=etree.HTML(cc)
# cc.encode("utf-8").decode("utf-8")
cc.encoding="utf-8"
return cc.text
#padas 转化成list
content=pd.read_csv(r"C:\Users\Administrator\Desktop\5005.csv",encoding="utf-8").values.tolist()
gs = []
for m in range(1101,len(content)+1):
i=content[m][0]
# i=input("请输入企业相关信息(企业名、工商号或纳税人号):")
first_url="https://m.tianyancha.com/search?key=%s"%i
# first_url="http://www.baidu.com"
a=down_load(first_url)
a=etree.HTML(a)
detail_url=a.xpath('//div[contains(@class,"col-xs-10")]/a/@href')[0]
# boss=a.xpath('//div[@class="search_row_new_mobil"]//a/text()')[0]
if a.xpath('/html/body/div[3]/div[3]/div[1]/div[4]/div/div/div[4]/span/text()') =="未公开" or a.xpath('/html/body/div[3]/div[3]/div[1]/div[4]/div/div/div[4]/span/text()') =="仍注册" or a.xpath('//div[@class="search_row_new_mobil"]/div/div[2]/span/text()')[0] =="-" or a.xpath('//div[@class="search_row_new_mobil"]/div/div[3]/span/text()')[0] =="-":
pass
else:
the_registered_capital = a.xpath('//div[@class="search_row_new_mobil"]/div/div[2]/span/text()')[0]
the_registered_time = a.xpath('//div[@class="search_row_new_mobil"]/div/div[3]/span/text()')[0]
boss = a.xpath('//div[@class="search_row_new_mobil"]//a/text()')[0]
print(detail_url)
aa = down_load(detail_url)
bb = etree.HTML(aa)
try:
company = bb.xpath('//div[@class="over-hide"]/div/text()')[0]
# industry = re.findall("行业:(.*?) ", aa, re.S)[0]
the_enterprise_type = re.findall("企业类型:(.*?) ", aa, re.S)[0]
registration_number = re.findall("工商注册号:(.*?) ", aa, re.S)[0]
organization_code = re.findall("组织结构代码:(.*?) ", aa, re.S)[0]
credit_code = re.findall("统一信用代码:(.*?) ", aa, re.S)[0]
business_period = re.findall("经营期限:(.*?) ", aa, re.S)[0]
# approval_date = aa.xpath('/html/body/div[3]/div[1]/div[7]/div/div[11]/span[2]/text()')[0]
registration_authority = re.findall("登记机关:(.*?) ", aa, re.S)[0]
registered_address = re.findall("注册地址:(.*?) ", aa, re.S)[0]
scope_of_business = re.findall('(.*?) ', aa, re.S)[0]
h = HTMLParser() # xx;‘ 的格式其实是unicode,后面跟的是unicode字符的十进制值,解决字体这样的方法
scope_of_business = h.unescape(scope_of_business)
new = [str(m+1),company,boss, the_registered_time,the_registered_capital,
the_enterprise_type,registration_number,organization_code,
credit_code, business_period,registration_authority,
registered_address,scope_of_business]
print(m+1)
# gs1[ii+1]=["公司名:"+company,"法人:"+boss[ii],"注册时间:"+the_registered_time[ii],"注册资本:"+the_registered_capital[ii],"企业类型:"+the_enterprise_type,"工商注册号:"+registration_number,"组织结构代码:"+organization_code,"统一信用代码:"+credit_code,"经营年限:"+business_period,"登记机关:"+registration_authority,"注册地址:"+registered_address,"经营范围:"+scope_of_business]
gs.append(new)
raise exception #抛出异常
except:
with open("5006663.csv", "w", encoding="utf-8",newline="") as f:
k = csv.writer(f, dialect="excel")
k.writerow(["编号", "公司名", "法人", "注册时间", "注册资本", "企业类型","工商注册号","组织结构代码","统一信用代码","经营年限","登记机关","注册地址","经营范围"])
for list in gs:
k.writerow(list)
with open("500666666666.csv", "w", encoding="utf-8",newline="") as f:
k = csv.writer(f, dialect="excel")
k.writerow(["编号", "公司名", "法人", "注册时间", "注册资本", "企业类型","工商注册号","组织结构代码","统一信用代码","经营年限","登记机关","注册地址","经营范围"])
for list in gs:
k.writerow(list)
# print(gs)
# print(gs1)
你可能感兴趣的:(爬虫)
Python爬虫requests(详细)
dme.
Python爬虫零基础入门 爬虫 python
本文来学爬虫使用requests模块的常见操作。1.URL参数无论是在发送GET/POST请求时,网址URL都可能会携带参数,例如:http://www.5xclass.cn?age=19&name=dengres=requests.get(url="https://www.5xclass.cn?age=19&name=deng")res=requests.get(url="https://www
Python中的 redis keyspace 通知_python 操作redis psubscribe(‘__keyspace@0__ ‘)
2301_82243733
程序员 python 学习 面试
最后Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习Python门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的Pytho
Selenium使用指南
程序员杰哥
selenium 测试工具 python 测试用例 职场和发展 程序人生 功能测试
概述selenium是网页应用中最流行的自动化测试工具,可以用来做自动化测试或者浏览器爬虫等。官网地址为:相对于另外一款web自动化测试工具QTP来说有如下优点:免费开源轻量级,不同语言只需要一个体积很小的依赖包支持多种系统,包括Windows,Mac,Linux支持多种浏览器,包括Chrome,FireFox,IE,safari,opera等支持多语言,包括Java,C,python,c#等主流
基于Python的搜索引擎的设计与实现
AI大模型应用之禅
DeepSeek R1 & AI大模型与大数据 java python javascript kotlin golang 架构 人工智能
搜索引擎,Python,爬虫,自然语言处理,信息检索,索引,算法,数据库1.背景介绍在信息爆炸的时代,海量数据无处不在,高效地获取所需信息变得至关重要。搜索引擎作为信息获取的桥梁,扮演着不可或缺的角色。传统的搜索引擎往往依赖于庞大的服务器集群和复杂的算法,对资源消耗较大,且难以满足个性化搜索需求。基于Python的搜索引擎设计,则凭借Python语言的易学易用、丰富的第三方库和强大的社区支持,为开
python进程数上限_python 多进程数量 对爬虫程序的影响
weixin_39759995
python进程数上限
1.首先看一下python多进程的优点和缺点多进程优点:1.稳定性好:多进程的优点是稳定性好,一个子进程崩溃了,不会影响主进程以及其余进程。基于这个特性,常常会用多进程来实现守护服务器的功能。然而多线程不足之处在于,任何一个线程崩溃都可能造成整个进程的崩溃,因为它们共享了进程的内存资源池。2.能充分利用多核cpu:由于python设计之初,没预料到多核cpu能够得到现在的发展,只考虑到了单核cpu
python爬虫--安装XPath Helper
S903784597
python 爬虫 开发语言
给chrome浏览器安装xpath插件。-从网盘下载xpath的插件文件链接:https://pan.baidu.com/s/1B85d5cLDyAz1xUQqmL3uug?pwd=3306提取码:3306-在chrome中输入chrome://extensions/打开扩展程序。-将从百度网盘中下载的xpath.zip文件直接拖到浏览器的扩展程序页面中-得到chrome插件,将插件开关开启,并且
使用Python爬虫实时监控行业新闻案例
海拥✘
python 爬虫 开发语言
目录背景环境准备请求网页数据解析网页数据定时任务综合代码使用代理IP提升稳定性运行截图与完整代码总结在互联网时代,新闻的实时性和时效性变得尤为重要。很多行业、技术、商业等领域的新闻都可以为公司或者个人发展提供有价值的信息。如果你有一项需求是要实时监控某个行业的新闻,自动化抓取并定期输出这些新闻,Python爬虫可以帮你轻松实现这一目标。本文将通过一个案例,带你一步一步实现一个简单的Python爬虫
Python爬虫-猫眼电影的影院数据
写python的鑫哥
爬虫案例1000讲 python 爬虫 猫眼 电影 电影院 数据 采集
前言本文是该专栏的第46篇,后面会持续分享python爬虫干货知识,记得关注。本文笔者以猫眼电影为例子,获取猫眼的影院相关数据。废话不多说,具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。接下来,跟着笔者直接往下看正文详细内容。(附带完整代码)正文地址:aHR0cHM6Ly93d3cubWFveWFuLmNvbS8=目标:获取猫眼电影的影院数据1.项目场景介绍老规矩,我们还是通过接码
Python从0到100(四):Python中的运算符介绍(补充)
是Dream呀
python java 数据库
前言:零基础学Python:Python从0到100最新最全教程。想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、计算机视觉、机器学习、神经网络以及人工智能相关知识,成为学习学习和学业的先行者!欢迎大家订阅专栏:零基础学Python:Python从0到100最新
Python从0到100(三十五):beautifulsoup的学习
是Dream呀
Dream的茶话会 python beautifulsoup 学习
前言:零基础学Python:Python从0到100最新最全教程。想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、计算机视觉、机器学习、神经网络以及人工智能相关知识,成为学习学习和学业的先行者!欢迎大家订阅专栏:零基础学Python:Python从0到100最新
python分布式爬虫去重_Python分布式爬虫(三) - 爬虫基础知识
weixin_39997311
python分布式爬虫去重
0相关源码1技术选型爬虫能做什么1.1scrapyVSrequests+beautifulsoup做爬虫的时候,经常都会听到scrapyVSrequests+beautifulsoup的组合在本次分布式爬虫实现中只用scrapy而不用后者的原因是:requests和beautifulsoup都是库,scrapy是一个框架框架中可以应用requests等,可以集合很多第三方库基于twisted(异步
Scrapy分布式爬虫系统
ivwdcwso
开发 运维 scrapy 分布式 爬虫 python 开发
一、概述在这篇博文中,我们将介绍如何使用Docker来部署Scrapy分布式爬虫系统,包括Scrapyd、Logparser和Scrapyweb三个核心组件。这种部署方式适用于Scrapy项目和Scrapy-Redis分布式爬虫项目。需要安装的组件:Scrapyd-服务端,用于运行打包后的爬虫代码,所有爬虫机器都需要安装。Logparser-服务端,用于解析爬虫日志,配合Scrapyweb进行实时
使用Python抓取新闻媒体网站的最新头条与相关内容:深入的爬虫开发与数据分析实战
Python爬虫项目
2025年爬虫实战项目 python 爬虫 数据分析 数据挖掘 人工智能 开发语言
引言在互联网时代,新闻媒体网站是人们获取信息和了解世界的重要渠道。随着新闻的即时更新,获取最新头条并进行数据分析成为许多行业领域(如媒体、广告、舆情监测等)的重要需求。通过抓取新闻媒体网站的内容,我们不仅能获取各类新闻文章,还能为后续的数据分析、情感分析、舆情监控等提供基础数据。本篇博客将详细讲解如何使用Python编写一个爬虫,抓取新闻媒体网站的最新头条及其相关内容。我们将使用最新的技术栈,包括
Python爬虫实战:获取笔趣阁图书信息,并做数据分析
ylfhpy
爬虫 python 爬虫 数据分析
注意:以下内容仅供技术研究,请遵守目标网站的robots.txt规定,控制请求频率避免对目标服务器造成过大压力!1.环境准备与反爬策略pythonimportrequestsfrombs4importBeautifulSoupimportpandasaspdimportreimporttimeimportrandomfromfake_useragentimportUserAgent#需安装:pip
如何利用Python爬虫获取淘宝分类详情:实战案例指南
数据小爬虫@
python 爬虫 开发语言
在电商领域,淘宝作为中国最大的电商平台之一,其分类详情数据对于市场分析、竞争策略制定以及电商运营优化具有极高的价值。通过Python爬虫技术,我们可以高效地获取这些数据,为电商从业者提供强大的数据支持。本文将详细介绍如何利用Python编写爬虫程序,快速获取淘宝分类详情数据。一、准备工作(一)环境搭建确保你的开发环境中已经安装了以下必要的库:requests:用于发送HTTP请求。Beautifu
Python 爬虫功能介绍
chengxuyuan1213_
python 爬虫 网络爬虫
在当今互联网信息爆炸的时代,数据的获取与分析成为了各行各业不可或缺的一部分。Python,作为一种简洁、易读且功能强大的编程语言,凭借其丰富的库和框架,在数据抓取(即网络爬虫)领域展现了极大的优势。本文旨在介绍Python爬虫的基础功能,帮助初学者快速入门,理解爬虫的基本工作原理及常用技术。一、什么是网络爬虫网络爬虫(WebCrawler),又称网络蜘蛛(WebSpider)或网络机器人(WebR
Python爬虫+数据分析:京东商品评论数据接口
代码逐梦人
爬虫技能晋升路线 python 爬虫 数据分析
一、引言在电商领域,商品评论数据蕴含着丰富的信息,如消费者的满意度、产品的优缺点等。京东作为国内知名的电商平台,其商品评论数据对于商家进行市场调研、改进产品,以及消费者了解商品真实情况都具有重要价值。通过获取京东商品评论数据接口,我们可以方便、高效地获取这些有价值的信息,为后续的数据分析和决策提供支持。二、接口概述需要说明的是,京东并没有公开免费的商品评论数据接口供开发者随意使用。如果要获取京东商
python爬虫多线程原理
代码逐梦人
爬虫技能晋升路线 python 爬虫 开发语言
多线程爬虫原理与优势在Python爬虫中,多线程是一种提升爬取效率的有效技术。在传统的单线程爬虫里,每次只能处理一个请求,只有等当前请求完成(包括发送请求、等待响应、解析数据)之后,才能开始下一个请求。而多线程爬虫可以让多个请求同时进行,在等待某个请求响应的时间里,CPU可以去处理其他请求,充分利用了CPU时间,大大提高了爬取效率。多线程爬虫的实现步骤1.引入必要的库importrequestsi
Python爬虫+数据分析:淘宝商品评论页面数据
代码逐梦人
爬虫技能晋升路线 python 爬虫 数据分析
一、引言在电商平台中,商品评论包含了大量消费者的反馈信息,这些信息对于商家了解产品优缺点、改进服务,以及消费者做出购买决策都具有重要价值。淘宝作为国内知名的电商平台,其商品评论页面的数据蕴含着丰富的信息。通过Python爬虫技术获取这些数据,并运用数据分析方法进行处理和解读,可以挖掘出有价值的商业洞察。然而,需要注意的是,淘宝有严格的反爬机制,在进行爬虫操作时要遵守相关法律法规和平台规则,避免过度
Python网络爬虫-WebSocket数据抓取
程序小勇
faiss 爬虫 python 网络协议 websocket 开发语言
目录前言1、WebSocket请求的分析通常涉及以下几个方面:2、利用WebSocket爬取数据总结最后,创作不易!非常感谢大家的关注、点赞、评论啦!谢谢三连哦!好人好运连连,学习进步!工作顺利哦!博主介绍:✌专注于前后端、机器学习、人工智能应用领域开发的优质创作者、秉着互联网精神开源贡献精神,答疑解惑、坚持优质作品共享。本人是掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战,
流行编程语言全解析:优势、应用与短板
a小胡哦
python java c++ c语言 javascript swift r语言
Python:优势Python以其简洁、易读的语法闻名,新手能快速上手。丰富的库和框架,能极大地提高开发效率。适用领域数据科学与分析:处理和分析大规模数据集,进行数据可视化。典型示例:Google用Python进行数据分析,处理海量数据以支持各种业务决策。机器学习与人工智能:构建和训练模型。典型示例:OpenAI在很多人工智能项目中广泛使用Python,如GPT系列模型的研发。网络爬虫:轻松从网页
052_爬虫_爬虫相关概念(引用《尚硅谷Python爬虫教程(小)小 白零基础速通》052章)
一个有趣的昵称
python 爬虫 开发语言
爬虫解释:通过程序,根据url(http://taobao.com)进行网页的爬取获取有用的信息实用程序模拟浏览器,去向服务发送请求,获取响应信息爬虫的核心爬取网页:爬取整个网页包含了网页中所的内容解析数据:将网页中得到的数据进行解析难点:爬虫和但爬虫之间的博弈爬虫的类型实例通用爬虫百度,360,Google,搜狗等搜索引擎功能访问网页-》抓取数据-》数据储存-》数据处理-》提供检索服务robot
尚硅谷爬虫note007
CSDNy666999
爬虫
一、urllib—异常1.urllib.error.HTTPError2.urllib.error.URLError#_*_coding:utf-8_*_#@Time:2025/2/1411:33#@Author:20250206-里奥#@File:demo26_异常#@Project:PythonProject10-14importurllib.requestimporturllib.error
【Python爬虫(15)】从0到1:Python爬虫实战攻克电商网站动态数据堡垒
奔跑吧邓邓子
Python爬虫 python 爬虫 开发语言 电商网站 动态数据
【Python爬虫】专栏简介:本专栏是Python爬虫领域的集大成之作,共100章节。从Python基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取,还涉及数据处理与分析。无论是新手小白还是进阶开发者,都能从中汲取知识,助力掌握爬虫核心技能,开拓技术视野。目录一、引言二、准备工作2.1环境搭建2.2目标电商网站分析三、攻克登
字节跳动后端或大数据基础知识面试题及参考答案(2万字长文)
大模型大数据攻城狮
大数据 大厂面试 数据结构 算法 leetcode
目录Redis的数据类型Redis数据类型的底层数据结构三次握手、四次挥手Redis持久化机制购物车为什么用Redis存,是永久存储吗MySQL的InnoDB索引数据结构哪些SQL的关键字会让索引失效队列、栈、数组、链表有什么不同讲讲爬虫的构成爬虫抓到的数据不清洗吗?不去重吗?对爬虫的更多了解Linux进程间通信机制进程和线程的区别线程私有的数据讲一下堆排序,每次调整的时间复杂度?堆排序是稳定的吗
爬虫快速上手之正则表达式总结
Athena945
python 正则表达式 正则表达式 python
目录一、正则表达式二、查找相关方法三、re.Match类的使用四、re.compile()方法的使用五、正则修饰符六、标点符号的特殊意义七、字母的特殊含义八、正则替换九、贪婪模式和非贪婪模式十、正则表达式小结一、正则表达式1、概念正则表达式是一个特殊的字符序列,通常被用来检索、替换那些符合某个模式(规则)的文本;在python中需要通过正则表达式对字符串进行匹配的时候,可以使用re模块实现全部的正
Go分布式爬虫笔记(五)_golang分布式爬虫架构
2401_87198107
golang 分布式 爬虫
系统级别优化与架构设计:如何对服务进行拆分如何将服务链接在一起服务调用的关系以及调用频率各种问题:如何让服务随着负载的增加具有可扩展性?是否采用DDD的架构设计?如何进行分布式的协调?选择何种中间件、缓存数据库与存储数据库?使用何种通信方式?如何设计缓存与数据库的关系,才能避免缓存失效之后大量数据直接打到数据库导致的服务响应变慢甚至服务雪崩的问题呢?分布式系统中数据的一致性,如果业务能够接受读取到
这知识点真细,Python获取HTTP响应头和响应体
梦想橡皮擦
Python爬虫120 python 浏览器工具 爬虫 python爬虫 开发者工具
哈喽!大家好,我是【梦想橡皮擦】,10年产研经验,致力于Python相关技术栈传播本文如果觉得不错,动动小手点个赞赞吧本文如果发现错误,欢迎在评论区中指正哦技术博客日更者,我喜欢写文章,如果任意一篇文章对你有帮助,就挺好的~欢迎大家订阅专栏⭐️⭐️《Python爬虫120》⭐️⭐️最近更新:2022年3月23日,橡皮擦的第610篇原创博客文章目录⛳️实战案例场景⛳️可获取的响应头⛳️实战案例场景这
python aiohttp_Python-异步之aiohttp
weixin_39864101
python aiohttp
什么是aiohttp?一个异步的HTTP客户端\服务端框架,基于asyncio的异步模块。可用于实现异步爬虫,更快于requests的同步爬虫。aiohttp和requestsrequests版爬虫requests同步方式连续30次简单爬取http://httpbin.org网站importrequestsfromdatetimeimportdatetimedeffetch(url):r=requ
运用python制作一个完整的股票分析系统
大懒猫软件
python 开发语言 django beautifulsoup
使用python制作一个股票分析系统,可以通过股票价格走势动态界面,实时动态监测不同类型股票的变化情况。以下是一个完整的股票分析系统开发指南,包括股票价格走势动态界面和实时监测功能。这个系统将结合网络爬虫、数据分析、机器学习和可视化技术,帮助你实时监测不同类型股票的变化情况。1.系统功能概述数据采集:使用网络爬虫技术从财经网站采集股票数据。数据处理:计算技术指标(如KDJ、BOLL)并进行数据预处
java的(PO,VO,TO,BO,DAO,POJO)
Cb123456
VO TO BO POJO DAO
转:
http://www.cnblogs.com/yxnchinahlj/archive/2012/02/24/2366110.html
-------------------------------------------------------------------
O/R Mapping 是 Object Relational Mapping(对象关系映
spring ioc原理(看完后大家可以自己写一个spring)
aijuans
spring
最近,买了本Spring入门书:spring In Action 。大致浏览了下感觉还不错。就是入门了点。Manning的书还是不错的,我虽然不像哪些只看Manning书的人那样专注于Manning,但怀着崇敬 的心情和激情通览了一遍。又一次接受了IOC 、DI、AOP等Spring核心概念。 先就IOC和DI谈一点我的看法。IO
MyEclipse 2014中Customize Persperctive设置无效的解决方法
Kai_Ge
MyEclipse2014
高高兴兴下载个MyEclipse2014,发现工具条上多了个手机开发的按钮,心生不爽就想弄掉他!
结果发现Customize Persperctive失效!!
有说更新下就好了,可是国内Myeclipse访问不了,何谈更新...
so~这里提供了更新后的一下jar包,给大家使用!
1、将9个jar复制到myeclipse安装目录\plugins中
2、删除和这9个jar同包名但是版本号较
SpringMvc上传
120153216
springMVC
@RequestMapping(value = WebUrlConstant.UPLOADFILE)
@ResponseBody
public Map<String, Object> uploadFile(HttpServletRequest request,HttpServletResponse httpresponse) {
try {
//
Javascript----HTML DOM 事件
何必如此
JavaScript html Web
HTML DOM 事件允许Javascript在HTML文档元素中注册不同事件处理程序。
事件通常与函数结合使用,函数不会在事件发生前被执行!
注:DOM: 指明使用的 DOM 属性级别。
1.鼠标事件
属性  
动态绑定和删除onclick事件
357029540
JavaScript jquery
因为对JQUERY和JS的动态绑定事件的不熟悉,今天花了好久的时间才把动态绑定和删除onclick事件搞定!现在分享下我的过程。
在我的查询页面,我将我的onclick事件绑定到了tr标签上同时传入当前行(this值)参数,这样可以在点击行上的任意地方时可以选中checkbox,但是在我的某一列上也有一个onclick事件是用于下载附件的,当
HttpClient|HttpClient请求详解
7454103
apache 应用服务器 网络协议 网络应用 Security
HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。本文首先介绍 HTTPClient,然后根据作者实际工作经验给出了一些常见问题的解决方法。HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需
递归 逐层统计树形结构数据
darkranger
数据结构
将集合递归获取树形结构:
/**
*
* 递归获取数据
* @param alist:所有分类
* @param subjname:对应统计的项目名称
* @param pk:对应项目主键
* @param reportList: 最后统计的结果集
* @param count:项目级别
*/
public void getReportVO(Arr
访问WEB-INF下使用frameset标签页面出错的原因
aijuans
struts2
<frameset rows="61,*,24" cols="*" framespacing="0" frameborder="no" border="0">
MAVEN常用命令
avords
Maven库:
http://repo2.maven.org/maven2/
Maven依赖查询:
http://mvnrepository.com/
Maven常用命令: 1. 创建Maven的普通java项目: mvn archetype:create -DgroupId=packageName 
PHP如果自带一个小型的web服务器就好了
houxinyou
apache 应用服务器 Web PHP 脚本
最近单位用PHP做网站,感觉PHP挺好的,不过有一些地方不太习惯,比如,环境搭建。PHP本身就是一个网站后台脚本,但用PHP做程序时还要下载apache,配置起来也不太很方便,虽然有好多配置好的apache+php+mysq的环境,但用起来总是心里不太舒服,因为我要的只是一个开发环境,如果是真实的运行环境,下个apahe也无所谓,但只是一个开发环境,总有一种杀鸡用牛刀的感觉。如果php自己的程序中
NoSQL数据库之Redis数据库管理(list类型)
bijian1013
redis 数据库 NoSQL
3.list类型及操作
List是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等,操作key理解为链表的名字。Redis的list类型其实就是一个每个子元素都是string类型的双向链表。我们可以通过push、pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈,又可以作为队列。
&nbs
谁在用Hadoop?
bingyingao
hadoop 数据挖掘 公司 应用场景
Hadoop技术的应用已经十分广泛了,而我是最近才开始对它有所了解,它在大数据领域的出色表现也让我产生了兴趣。浏览了他的官网,其中有一个页面专门介绍目前世界上有哪些公司在用Hadoop,这些公司涵盖各行各业,不乏一些大公司如alibaba,ebay,amazon,google,facebook,adobe等,主要用于日志分析、数据挖掘、机器学习、构建索引、业务报表等场景,这更加激发了学习它的热情。
【Spark七十六】Spark计算结果存到MySQL
bit1129
mysql
package spark.examples.db
import java.sql.{PreparedStatement, Connection, DriverManager}
import com.mysql.jdbc.Driver
import org.apache.spark.{SparkContext, SparkConf}
object SparkMySQLInteg
Scala: JVM上的函数编程
bookjovi
scala erlang haskell
说Scala是JVM上的函数编程一点也不为过,Scala把面向对象和函数型编程这两种主流编程范式结合了起来,对于熟悉各种编程范式的人而言Scala并没有带来太多革新的编程思想,scala主要的有点在于Java庞大的package优势,这样也就弥补了JVM平台上函数型编程的缺失,MS家.net上已经有了F#,JVM怎么能不跟上呢?
对本人而言
jar打成exe
bro_feng
java jar exe
今天要把jar包打成exe,jsmooth和exe4j都用了。
遇见几个问题。记录一下。
两个软件都很好使,网上都有图片教程,都挺不错。
首先肯定是要用自己的jre的,不然不能通用,其次别忘了把需要的lib放到classPath中。
困扰我很久的一个问题是,我自己打包成功后,在一个同事的没有装jdk的电脑上运行,就是不行,报错jvm.dll为无效的windows映像,如截图
最后发现
读《研磨设计模式》-代码笔记-策略模式-Strategy
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/*
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化
简单理解:
1、将不同的策略提炼出一个共同接口。这是容易的,因为不同的策略,只是算法不同,需要传递的参数
cmd命令值cvfM命令
chenyu19891124
cmd
cmd命令还真是强大啊。今天发现jar -cvfM aa.rar @aaalist 就这行命令可以根据aaalist取出相应的文件
例如:
在d:\workspace\prpall\test.java 有这样一个文件,现在想要将这个文件打成一个包。运行如下命令即可比如在d:\wor
OpenJWeb(1.8) Java Web应用快速开发平台
comsci
java 框架 Web 项目管理 企业应用
OpenJWeb(1.8) Java Web应用快速开发平台的作者是我们技术联盟的成员,他最近推出了新版本的快速应用开发平台 OpenJWeb(1.8),我帮他做做宣传
OpenJWeb快速开发平台以快速开发为核心,整合先进的java 开源框架,本着自主开发+应用集成相结合的原则,旨在为政府、企事业单位、软件公司等平台用户提供一个架构透
Python 报错:IndentationError: unexpected indent
daizj
python tab 空格 缩进
IndentationError: unexpected indent 是缩进的问题,也有可能是tab和空格混用啦
Python开发者有意让违反了缩进规则的程序不能通过编译,以此来强制程序员养成良好的编程习惯。并且在Python语言里,缩进而非花括号或者某种关键字,被用于表示语句块的开始和退出。增加缩进表示语句块的开
HttpClient 超时设置
dongwei_6688
httpclient
HttpClient中的超时设置包含两个部分:
1. 建立连接超时,是指在httpclient客户端和服务器端建立连接过程中允许的最大等待时间
2. 读取数据超时,是指在建立连接后,等待读取服务器端的响应数据时允许的最大等待时间
在HttpClient 4.x中如下设置:
HttpClient httpclient = new DefaultHttpC
小鱼与波浪
dcj3sjt126com
一条小鱼游出水面看蓝天,偶然间遇到了波浪。 小鱼便与波浪在海面上游戏,随着波浪上下起伏、汹涌前进。 小鱼在波浪里兴奋得大叫:“你每天都过着这么刺激的生活吗?简直太棒了。” 波浪说:“岂只每天过这样的生活,几乎每一刻都这么刺激!还有更刺激的,要有潮汐变化,或者狂风暴雨,那才是兴奋得心脏都会跳出来。” 小鱼说:“真希望我也能变成一个波浪,每天随着风雨、潮汐流动,不知道有多么好!” 很快,小鱼
Error Code: 1175 You are using safe update mode and you tried to update a table
dcj3sjt126com
mysql
快速高效用:SET SQL_SAFE_UPDATES = 0;下面的就不要看了!
今日用MySQL Workbench进行数据库的管理更新时,执行一个更新的语句碰到以下错误提示:
Error Code: 1175
You are using safe update mode and you tried to update a table without a WHERE that
枚举类型详细介绍及方法定义
gaomysion
enum javaee
转发
http://developer.51cto.com/art/201107/275031.htm
枚举其实就是一种类型,跟int, char 这种差不多,就是定义变量时限制输入的,你只能够赋enum里面规定的值。建议大家可以看看,这两篇文章,《java枚举类型入门》和《C++的中的结构体和枚举》,供大家参考。
枚举类型是JDK5.0的新特征。Sun引进了一个全新的关键字enum
Merge Sorted Array
hcx2013
array
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
Note:You may assume that nums1 has enough space (size that is
Expression Language 3.0新特性
jinnianshilongnian
el 3.0
Expression Language 3.0表达式语言规范最终版从2013-4-29发布到现在已经非常久的时间了;目前如Tomcat 8、Jetty 9、GlasshFish 4已经支持EL 3.0。新特性包括:如字符串拼接操作符、赋值、分号操作符、对象方法调用、Lambda表达式、静态字段/方法调用、构造器调用、Java8集合操作。目前Glassfish 4/Jetty实现最好,对大多数新特性
超越算法来看待个性化推荐
liyonghui160com
超越算法来看待个性化推荐
一提到个性化推荐,大家一般会想到协同过滤、文本相似等推荐算法,或是更高阶的模型推荐算法,百度的张栋说过,推荐40%取决于UI、30%取决于数据、20%取决于背景知识,虽然本人不是很认同这种比例,但推荐系统中,推荐算法起的作用起的作用是非常有限的。
就像任何
写给Javascript初学者的小小建议
pda158
JavaScript
一般初学JavaScript的时候最头痛的就是浏览器兼容问题。在Firefox下面好好的代码放到IE就不能显示了,又或者是在IE能正常显示的代码在firefox又报错了。 如果你正初学JavaScript并有着一样的处境的话建议你:初学JavaScript的时候无视DOM和BOM的兼容性,将更多的时间花在 了解语言本身(ECMAScript)。只在特定浏览器编写代码(Chrome/Fi
Java 枚举
ShihLei
java enum 枚举
注:文章内容大量借鉴使用网上的资料,可惜没有记录参考地址,只能再传对作者说声抱歉并表示感谢!
一 基础 1)语法
枚举类型只能有私有构造器(这样做可以保证客户代码没有办法新建一个enum的实例)
枚举实例必须最先定义
2)特性
&nb
Java SE 6 HotSpot虚拟机的垃圾回收机制
uuhorse
java HotSpot GC 垃圾回收 VM
官方资料,关于Java SE 6 HotSpot虚拟机的garbage Collection,非常全,英文。
http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html
Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning
&