2016-05-07 6 views
0

Ich habe eine Datenbank, wo ich die Startseite einiger Websites gespeichert habe. Ich möchte, dass dieses Skript einen Link aus dieser Datenbank abruft und dann andere auf der Seite vorhandene href-Links findet und sie dann in eine andere Tabelle in mysql einfügt. Hier ist das Skript: -Python Beasesoup Crawler Fehler beim Auswählen der URL von Mysql

import requests 
from bs4 import BeautifulSoup 
import MySQLdb 
import os 
import urllib2 
conn = MySQLdb.connect(host= "localhost", 
       user="user", 
       passwd="password", 
       db="crw") 
n = "no" 
cat1 = "MOVIES" 
cat2 = "NEWS" 
loc = "SL" 
act = "YES" 
cursor = conn.cursor() 
ext1 = ("SELECT LINK FROM LINK_MASTER WHERE ACT = %s and CAT1 = %s AND CAT2 = %s AND LOC = %s") 
cursor.execute(ext1, (act, cat1, cat2, loc)) 
urlq = cursor.fetchone() 
url = urlq 
print url 
response = requests.get(url) 
html = response.content 
soup = BeautifulSoup(html, 'html.parser') 
for item in soup.find_all(attrs={"class": "post-title"}): 
    for link in item.find_all('a'): 
     p = (link.get('href')) 
     print p 
     cursor.execute("INSERT IGNORE INTO URL(URL,FD,CAT1,CAT2) VALUES (%s,%s,%s,%s)", (p,n,cat1,cat2)) 
     conn.commit() 

Ich bekomme folgenden Fehler. Bitte helfen Sie mir bei der Lösung dieses Problems, da ich neu bei Python bin und versuche, neue Sachen zu lernen.

Traceback (most recent call last): 
    File "news.py", line 25, in <module> 
    response = requests.get(url) 
    File "/usr/lib/python2.7/dist-packages/requests/api.py", line 55, in get 
    return request('get', url, **kwargs) 
    File "/usr/lib/python2.7/dist-packages/requests/api.py", line 44, in request 
    return session.request(method=method, url=url, **kwargs) 
    File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 428, in request 
    env_proxies = get_environ_proxies(url) or {} 
    File "/usr/lib/python2.7/dist-packages/requests/utils.py", line 516, in get_environ_proxies 
    if should_bypass_proxies(url): 
    File "/usr/lib/python2.7/dist-packages/requests/utils.py", line 478, in should_bypass_proxies 
    netloc = urlparse(url).netloc 
    File "/usr/lib/python2.7/urlparse.py", line 143, in urlparse 
    tuple = urlsplit(url, scheme, allow_fragments) 
    File "/usr/lib/python2.7/urlparse.py", line 182, in urlsplit 
    i = url.find(':') 
AttributeError: 'tuple' object has no attribute 'find' 
+0

Finden Sie heraus, den Wert von 'url' wenn die Ausnahme tritt auf ... es könnte einen Hinweis geben – har07

Antwort

0

Die URL ist in der Tupel von fetchone zurückgegeben, müssen Sie, dass auf Anfragen passieren nicht das Tupel selbst: (debug)

url = cursor.fetchone()[0] 
+1

thx. das hat funktioniert. –

Verwandte Themen