Хорошо.Это то, что делает моя программа (на Python).Сначала он загружает HTML-страницу на этом веб-сайте locationary.com, а затем берет все бизнес-страницы с этой страницы и находит все ссылки на yellowpages.com для этих компаний.После того, как он находит их, он вставляет их на веб-сайт с помощью модуля webbrowser.(Если вы прочитаете код, это, вероятно, будет иметь БОЛЬШОЙ смысл).
Прежде всего, я хочу предоставить ссылку на yellowpages.com без модуля webbrowser, потому что когда мне нужно,сделайте так, чтобы Firefox всегда заходил на locationary.com, и тогда мне пришлось искать способ закрыть firefox, чтобы он не перегружался вкладками.Я пытался использовать urllib2 и urlopen, но он ничего не сделал, когда я запустил его.Теперь я начинаю думать, что мне нужно отправить некоторый тип cookie или заголовок http с моим запросом.Как вы это делаете?
Если что-то не имеет смысла, пожалуйста, попросите меня уточнить!
Вот мой код:
from urllib import urlopen
from gzip import GzipFile
from cStringIO import StringIO
import re
import urllib
import urllib2
import webbrowser
import mechanize
import time
from difflib import SequenceMatcher
import os
def download(url):
s = urlopen(url).read()
if s[:2] == '\x1f\x8b': # assume it's gzipped data
with GzipFile(mode='rb', fileobj=StringIO(s)) as ifh:
s = ifh.read()
return s
for t in range(0, 1):
s = download('http://www.locationary.com/place/en/US/Arizona/Phoenix-page7/?ACTION_TOKEN=NumericAction')
findTitle = re.compile('<title>(.*)</title>')
getTitle = re.findall(findTitle,s)
findLoc = re.compile('http://www\.locationary\.com/place/en/US/.{1,50}/.{1,50}/.{1,100}\.jsp')
findLocL = re.findall(findLoc,s)
W, X, XA, Y, YA, Z, ZA = [], [], [], [], [], [], []
for i in range(2, 25):
print i
b = download(findLocL[i])
findYP = re.compile('http://www\.yellowpages\.com/')
findYPL = re.findall(findYP,b)
findTitle = re.compile('<title>(.*) \(\d{1,10}.{1,100}\)</title>')
getTitle = re.findall(findTitle,b)
findAddress = re.compile('<title>.{1,100}\((.*), .{4,14}, United States\)</title>')
getAddress = re.findall(findAddress,b)
if not findYPL:
if not getTitle:
print ""
else:
W.append(findLocL[i])
b = download(findLocL[i])
if not getTitle:
print ""
else:
X.append(getAddress)
b = download(findLocL[i])
if not getTitle:
print ""
else:
Y.append(getTitle)
sizeWXY = len(W)
def XReplace(text, d):
for (k, v) in d.iteritems():
text = text.replace(k, v)
XA.append(text)
def XReplace(text, d):
for (k, v) in d.iteritems():
text = text.replace(k, v)
YA.append(text)
for d in range(0, sizeWXY):
old = str(X[d])
reps = {' ':'-', ',':'', '\'':'', '[':'', ']':''}
XReplace(old, reps)
old2 = str(Y[d])
YReplace(old2, reps)
count = 0
for e in range(0, sizeWXY):
newYPL = "http://www.yellowpages.com/" + XA[e] + "/" + YA[e] + "?order=distance"
v = download(newYPL)
abc = str('<h3 class="business-name fn org">\n<a href="')
dfe = str('" class="no-tracks url "')
findFinal = re.compile(abc + '(.*)' + dfe)
getFinal = re.findall(findFinal, v)
if not getFinal:
W.remove(W[(e-count)])
X.remove(X[(e-count)])
count = (count+1)
else:
for f in range(0,1):
Z.append(getFinal[f])
XA = []
for c in range(0,(len(X))):
aGd = re.compile('(.*), .{1,50}')
bGd = re.findall(aGd, str(X[c]))
XA.append(bGd)
LenZ = len(Z)
V = []
for i in range(0, (len(W))):
if i == 0:
countTwo = 0
gda = download(Z[i-(countTwo)])
ab = str('"street-address">\n')
cd = str('\n</span>')
ZAddress = re.compile(ab + '(.*)' + cd)
ZAddress2 = re.findall(ZAddress, gda)
for b in range(0,(len(ZAddress2))):
if not ZAddress2[b]:
print ""
else:
V.append(str(ZAddress2[b]))
a = str(W[i-(countTwo)])
n = str(Z[i-(countTwo)])
c = str(XA[i])
d = str(V[i])
m = SequenceMatcher(None, c, d)
if m.ratio() < 0.50:
Z.remove(Z[i-(countTwo)])
W.remove(W[i-(countTwo)])
countTwo = (countTwo+1)
def ZReplace(text3, dic3):
for p, q in dic3.iteritems():
text3 = text3.replace(p, q)
ZA.append(text3)
for y in range(0,len(Z)):
old3 = str(Z[y])
reps2 = {':':'%3A', '/':'%2F', '?':'%3F', '=':'%3D'}
ZReplace(old3, reps2)
for z in range(0,len(ZA)):
findPID = re.compile('\d{5,20}')
getPID = re.findall(findPID,str(W[z]))
newPID = re.sub("\D", "", str(getPID))
finalURL = "http://www.locationary.com/access/proxy.jsp?ACTION_TOKEN=proxy_jsp$JspView$SaveAction&inPlaceID=" + str(newPID) + "&xxx_c_1_f_987=" + str(ZA[z])
webbrowser.open(finalURL)
time.sleep(5)
os.system("taskkill /F /IM firefox.exe")