0
以下は、美しいスープを使用してサイトを擦るコードです。このコードはWindows上でうまく動作しますが、ubuntuには問題があります。 ubuntuでは、コードが実行され、時にはエラーが発生することがあります。時にはコードが実行され、時にはエラーが発生する
エラーは以下の通りです:
import requests
import lxml
from bs4 import BeautifulSoup
import xlrd
import xlwt
file_location = "/home/nitink/Python Linux/BeautifulSoup/Craftsvilla/Craftsvilla.xlsx"
workbook = xlrd.open_workbook(file_location)
sheet = workbook.sheet_by_index(0)
products = []
for r in range(sheet.nrows):
products.append(sheet.cell_value(r,0))
book = xlwt.Workbook(encoding= "utf-8", style_compression = 0)
sheet = book.add_sheet("Sheet11", cell_overwrite_ok=True)
for index, url in enumerate(products):
new_url = "http://www." + url
source = requests.get(new_url)
data = source.content
soup = BeautifulSoup(data, "lxml")
sheet.write(index, 0, url)
try:
Product_Name = soup.select(".product-title")[0].text.strip()
sheet.write(index, 1, Product_Name)
except Exception:
sheet.write(index, 1, "")
book.save("Craftsvilla Output.xls")
保存Craftsvilla.xlsxとして、下記のリンク
craftsvilla.com/shop/01-princess-ayesha-cotton-salwar-suit-for-rudra-house/5601472
craftsvilla.com/shop/3031-pista-prachi/3715170
craftsvilla.com/shop/795-peach-colored-stright-salwar-suit/5608295
craftsvilla.com/catalog/product/view/id/5083511/s/dharm-fashion-villa-embroidery-navy-blue-slawar-suit-gown
注:以下は
Traceback (most recent call last):
File "Craftsvilla.py", line 22, in <module>
source = requests.get(new_url)
File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 70, in get
return request('get', url, params=params, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 56, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 488, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 609, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 487, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='www.craftsvilla.com', port=80): Max retries exceeded with url: /shop/01-princess-ayesha-cotton-salwar-suit-for-rudra-house/5601472 (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7f6685fc3310>: Failed to establish a new connection: [Errno -2] Name or service not known',))
は私のコードです:いくつかの人には、コードは実行されますが、いつか同じコードを入力すると、エラーが表示されます。理由はわかりません。同じコードはウィンドウにエラーを表示しません。
私はあなたが短期間に同じIPアドレスからあまりにも多くのリクエストを送信しているので、サーバは接続を拒否するかもしれないと思います。 –
しかし、なぜ同じコードがWindows上でエラーを出すことはありません。 – Nitin
'new_url'の後に' print(new_url) 'を追加すると、xlsxファイルを読んで不完全なデータを取得したと思います。 –