links aus einer liste besuchen und ziel scrapen
Verfasst: Dienstag 23. Oktober 2012, 22:22
hi community,
ich habe mich (nach meinem letzten) mal wieder an einem neuen wörter-scraper versucht und scheitere momentan an meinem vorhaben.
das ist der relevante codeteil:
also der code soll eine webseite nach links durchforsten, allen links folgen und von jeder verlinkten webseite alle gefilterten wörter in eine liste packen und von dort aus in eine text schreiben.
problem.. es funzt nicht und ich verstehe nicht warum. jedes mal wenn ich etwas korrigiere kommen nur mehr fehler dazu
theoretisch müsste er doch gehen. *amkopfkratz*
ich bin sehr dankbar für jeden tipp
p.s. ich bin erst seit kurzen am python coden. ich bitte um nachsicht.
ich habe mich (nach meinem letzten) mal wieder an einem neuen wörter-scraper versucht und scheitere momentan an meinem vorhaben.
das ist der relevante codeteil:
Code: Alles auswählen
#!/usr/bin/python
import mechanize
import urllib2
import re
from bs4 import BeautifulSoup
# I am doing a lot of not so plausible stuff, i better pretend to be a browser
browser = mechanize.Browser()
#cookie jar
cookies = cookielib.MozillaCookieJar('cookie_jar')
# set up the emulated browser
browser.set_cookiejar(cookies)
browser.set_handle_redirect(True)
browser.set_handle_robots(False)
browser.set_handle_equiv(True)
browser.set_handle_gzip(False)
browser.set_handle_referer(True)
browser.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
browser.addheaders = [('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:14.0) Gecko/20120405 Firefox/14.0a1')]
# prep my lists
urls = []
wordlist = []
#prep containers
alltextinsoup = open('wordlist.txt', 'w')
urlsfile = open('links.txt', 'w')
# cook the initial soup
target = raw_input("enter target to scrape for words_> ")
r = browser.open("http://%s"%target)
html = r.read()
soup = BeautifulSoup(html)
# find all links in initial soup
for eachlink in soup.findAll('a'):
urls.append(eachlink.get('href'))
for link in urls:
# cook a soup for every links content
r = browser.open(link)
html = r.read()
soup = BeautifulSoup(html)
rawtext = (soup.get_text()).encode('utf-8', 'ignore')
# i just want the clean words
rawtext = re.sub('[^A-Za-z ]+', '', rawtext)
splittedrawtext = rawtext.split(' ')
for x in splittedrawtext:
if x not in wordlist and (len(x) > 3 and len(x) < 12):
wordlist.append(x.encode('utf-8'))
for item in wordlist:
alltextinsoup.write(str(item) + '\n')
################################
alltextinsoup.close()
problem.. es funzt nicht und ich verstehe nicht warum. jedes mal wenn ich etwas korrigiere kommen nur mehr fehler dazu
theoretisch müsste er doch gehen. *amkopfkratz*
ich bin sehr dankbar für jeden tipp
p.s. ich bin erst seit kurzen am python coden. ich bitte um nachsicht.