0

beautifulsoupを使用してCraigslistからデータPIDと価格を取得しようとしています。CLallsites.txtファイルを提供する別のコードを作成しました。このコードでは、txtファイルからこれらの各サイトを取得し、最初の10ページのすべてのエントリのPIDを取得しようとしています。私のコードは次のとおりです。

  from bs4 import BeautifulSoup       
  from urllib2 import urlopen 
  readfile = open("CLallsites.txt")
  product = "mcy"
  while 1:
    u = ""
    count = 0
    line = readfile.readline()
    commaposition = line.find(',')
    site = line[0:commaposition]
    location = line[commaposition+1:]
    site_filename = location + '.txt'
    f = open(site_filename, "a")
    while (count < 10):
       sitenow = site + "\\" + product + "\\" + str(u)
       html = urlopen(str(sitenow))                      
       soup = BeautifulSoup(html)                
       postings = soup('p',{"class":"row"})
       for post in postings:
            y = post['data-pid']
            print y
       count = count +1
       index = count*100
       u = "index" + str(index) + ".html"
    if not line:
        break
    pass             

私のCLallsites.txtは次のようになります。

craiglistのサイト、場所(Stackoverflowではcragslistリンクを使用した投稿が許可されていないため、テキストを表示できません。それが役立つ場合は、テキストファイルを添付してみてください。)

コードを実行すると、次のエラーが発生します。

トレースバック(最後の最後の呼び出し):

ファイル"reading.py"、16行目、html = urlopen(str(sitenow))

ファイル"/usr/lib/python2.7/urllib2.py"、行126、urlopen return _opener.open(url、data、timeout)

File "/usr/lib/python2.7/urllib2.py", line 400, in open response = self._open(req, data)

File "/usr/lib/python2.7/urllib2.py", line 418, in _open '_open', req)

File "/usr/lib/python2.7/urllib2.py", line 378, in _call_chain result = func(*args)

File "/usr/lib/python2.7/urllib2.py", line 1207, in http_open return self.do_open(httplib.HTTPConnection, req)

File "/usr/lib/python2.7/urllib2.py", line 1177, in do_open raise URLError(err)

urllib2.URLError:

Any ideas about what I am doing wrong?

4

1 に答える 1

0

I don't know what is the content of sitenow, but it looks like it is an invalid URL. Note that URLs use slashes and not backslashes (so the statement sould be something similar to sitenow = site + "/" + product + "/" + str(u))

于 2013-03-27T00:04:56.273 に答える