2017-01-26 15 views
0

私はlinkを訪問し、それぞれlinkに特定のkeywordsを見つけようとするコードセグメントを持っています。最後にデータ型が正しくありませんbeautifulsoup TypeError:unhashable type: 'list'

linkはそれがlistに格納するkeywords一つ以上を持っている場合。ここで

for a in soup.find_all('a', class_="result-title hdrlnk", text=re.compile(job_kw,re.IGNORECASE)): 

をコードです::この行に TypeError: unhashable type: 'list':私は自分のコードを実行したときに

はしかし、それは私の問題を与える

jobs_by_city = [ 
'http://boston.website.org/search/widget', 
] 

job_kw = [['web site','user', 'account'],['permission', 'name']] 
job_kw = sum(job_kw, []) 

jobs = [] 

for job_in_city in jobs_by_city: 
    a_job = requests.get(job_in_city) 
    soup = BeautifulSoup(a_job.text, "lxml") 
    for a in soup.find_all('a', class_="result-title hdrlnk", text=re.compile(job_kw,re.IGNORECASE)): 
     print(a.get('href')) 
     #jobs.append(a.get('href')) 

は、私がここで間違って何をしているのですか?

+0

を探しているHTML要素を提供していませんか? 're.compile'はパターンとしてリストを取りません。私は 'text'引数としてリストを渡すことができると思います。 BS v4では 'string'引数にリストを渡すことができます。 – Himal

答えて

0

re.compile入力としてlistを使用しません。あなたは、キーの言葉を反復処理する必要があります。

from bs4 import BeautifulSoup 
import requests 
import re 

jobs_by_city = [ 
'http://boston.website.org/search/widget', 
] 

job_kws = [['web site','user', 'account'],['permission', 'name']] 
job_kws = sum(job_kws, []) 

jobs = [] 

for job_in_city in jobs_by_city: 
    a_job = requests.get(job_in_city) 
    soup = BeautifulSoup(a_job.text, "lxml") 
    for job_kw in job_kws: 
     for a in soup.find_all('a', class_="result-title hdrlnk", text=re.compile(job_kw,re.IGNORECASE)): 
      print(a.get('href')) 
      #jobs.append(a.get('href')) 

与えられたURLは、あなたが使用している「美しいスープ」バージョン:)

関連する問題