2019年12月11日 | 标签:

———————————————————————————————————————–

内容:

#-*- coding: utf-8 -*-
from bs4 import BeautifulSoup
import re,urllib2,time
key=”杀价”
url=”elong.com”
key=urllib2.quote(key)
t=time.time()
html=urllib2.urlopen(“http://www.baidu.com/s?word=%s” %key).read()
soup=BeautifulSoup(html)
cache=soup.find(“span”,text=re.compile(“%s” %url))
print cache.find_previous(“table”).get(“id”)
print cache.find_previous(“a”).get(“href”)
print urllib2.urlopen(cache.find_previous(“a”).get(“href”)).geturl()
print cache.get_text().split(” “)[3]
print time.time()-t

窍门使用find查找span标签中位置包含网址的 然后使用find previous 查找table 使用get 返回id值

python 查找跳转后的url 使用urllib2.open(url).geturl()这个方法 open是打开geturl是得到url

使用变量替换 是%S 然后在引号外面紧接些 % 变量名称

查文字是get_text()就可以 再用split分开

#-*- coding: utf-8 -*-
from bs4 import BeautifulSoup
import re,urllib2,time
key=”杀价”
url=”elong.com”
key=urllib2.quote(key)
t=time.time()
html=urllib2.urlopen(“http://www.baidu.com/s?word=%s” %key).read()
soup=BeautifulSoup(html)
cache=soup.find(“span”,text=re.compile(“%s” %url))
print cache.find_previous(“table”).get(“id”)
print cache.find_previous(“a”).get(“href”)
print urllib2.urlopen(cache.find_previous(“a”).get(“href”)).geturl()
print cache.get_text().split(” “)[3]
print time.time()-t

窍门使用find查找span标签中位置包含网址的 然后使用find previous 查找table 使用get 返回id值

python 查找跳转后的url 使用urllib2.open(url).geturl()这个方法 open是打开geturl是得到url

使用变量替换 是%S 然后在引号外面紧接些 % 变量名称

查文字是get_text()就可以 再用split分开

没有评论 (455 views)
2019年12月6日 | 标签:

 

先使用命令安装bs4

sudo easy_install pip

安装pip工具
sudo pip install bs4

# -*- coding: utf8 -*-

import sys

reload(sys)

sys.setdefaultencoding(’utf-8’)

from bs4 import BeautifulSoup
import re,time,urllib2
html=urllib2.urlopen(”http://www.51job.com/shanghai”,timeout=5).read()
soup=BeautifulSoup(html)
div=soup.find(”div”,id=”dataidea_1″)
for links in div.find_all(”a”,title=True):
print links.get(”title”)

print links.get(”href”)
html1=urllib2.urlopen(links.get(”href”),timeout=5).read()
soup1=BeautifulSoup(html1)
div1=soup1.find(”div”,class_=”redline”)
if div1!=None:

for link1 in div1.find_all(”a”,href=True):
print link1.get_text()
if soup1.find(”p”,”txt_font1″)!=None:
if  soup1.find(”p”,”txt_font1″).get_text().find(”tp”)>1:
print soup1.find(”p”,”txt_font1″).get_text()

print “\n”
print “\n”

先使用命令安装bs4

sudo easy_install pip

安装pip工具
sudo pip install bs4

# -*- coding: utf8 -*-

import sys

reload(sys)

sys.setdefaultencoding(’utf-8’)

from bs4 import BeautifulSoup
import re,time,urllib2
html=urllib2.urlopen(”http://www.51job.com/shanghai”,timeout=5).read()
soup=BeautifulSoup(html)
div=soup.find(”div”,id=”dataidea_1″)
for links in div.find_all(”a”,title=True):
print links.get(”title”)

print links.get(”href”)
html1=urllib2.urlopen(links.get(”href”),timeout=5).read()
soup1=BeautifulSoup(html1)
div1=soup1.find(”div”,class_=”redline”)
if div1!=None:

for link1 in div1.find_all(”a”,href=True):
print link1.get_text()
if soup1.find(”p”,”txt_font1″)!=None:
if  soup1.find(”p”,”txt_font1″).get_text().find(”tp”)>1:
print soup1.find(”p”,”txt_font1″).get_text()

print “\n”
print “\n”

没有评论 (113 views)
2019年12月5日 | 标签:

 

如果一个中文数组

keys=[“武汉酒店”,”上海酒店”,”北京酒店”,”广州酒店”,”海南酒店”,”三亚酒店”]

 

打印单个元素的时候还可以

print keys[0]

武汉

但要打印整个数组的时候

print keys

[‘\xce\xe4\xba\xba\xbe\xc6\xb5\xea’, ‘\xc9\xcf\xba\xa3\xbe\xc6\xb5\xea’, ‘\xb1\xb1\xbe\xa9\xbe\xc6\xb5\xea’, ‘\xb9\xe3\xd6\xdd\xbe\xc6\xb5\xea’, ‘\xba\xa3\xc4\xcf\xbe\xc6\xb5\xea’, ‘\xc8\xfd\xd1\xc7\xbe\xc6\xb5\xea’]

就是乱码了

如果我像打印出 中文的数组这个是没法的

又因为decode只能作用在string字符串上

所以把在python中把数组转为字符串 然后再每个数据元素加一个换行符

通过split的逆方法就可以了

也就是join

“SperateCode”.join(listarray) 可以得到一个字符串

图中就是”\n”.join(keys) 就可以得到一个每个城市一行的数组

武汉酒店
上海酒店
北京酒店
广州酒店
海南酒店
三亚酒店

 

 

如果打印数组中元素的时候也是乱码

print keys[0]

 

一共3中

指定解码

beautifulsoup html参数后加from_encoding=””

如果要知道网站编码就用html.original_encoding 就可以知道

然后再strings.encode(“”)

就可以

beautifuouspu(html,from_encoding=”gbk”
code=soup.original_encoding
print  soup.title.get_text().encode(code)

如果一个中文数组

keys=[“武汉酒店”,”上海酒店”,”北京酒店”,”广州酒店”,”海南酒店”,”三亚酒店”]

 

打印单个元素的时候还可以

print keys[0]

武汉

但要打印整个数组的时候

print keys

[‘\xce\xe4\xba\xba\xbe\xc6\xb5\xea’, ‘\xc9\xcf\xba\xa3\xbe\xc6\xb5\xea’, ‘\xb1\xb1\xbe\xa9\xbe\xc6\xb5\xea’, ‘\xb9\xe3\xd6\xdd\xbe\xc6\xb5\xea’, ‘\xba\xa3\xc4\xcf\xbe\xc6\xb5\xea’, ‘\xc8\xfd\xd1\xc7\xbe\xc6\xb5\xea’]

就是乱码了

如果我像打印出 中文的数组这个是没法的

又因为decode只能作用在string字符串上

所以把在python中把数组转为字符串 然后再每个数据元素加一个换行符

通过split的逆方法就可以了

也就是join

“SperateCode”.join(listarray) 可以得到一个字符串

图中就是”\n”.join(keys) 就可以得到一个每个城市一行的数组

武汉酒店
上海酒店
北京酒店
广州酒店
海南酒店
三亚酒店

 

 

如果打印数组中元素的时候也是乱码

print keys[0]

 

一共3中

指定解码

beautifulsoup html参数后加from_encoding=””

如果要知道网站编码就用html.original_encoding 就可以知道

然后再strings.encode(“”)

就可以

beautifuouspu(html,from_encoding=”gbk”
code=soup.original_encoding
print  soup.title.get_text().encode(code)

没有评论 (411 views)