0
クラスを使用してWebデータをスクラップする場合、私はPythonの初心者です。だから、深刻な間違いがあれば事前に謝罪してください。私はwikipediaウェブサイトのa
タグを使ってテキストを解析するスクリプトを書いた。私は私のレベルからコードを正確に書こうとしましたが、何らかの理由でコードを実行してエラーをスローします。コードと私が持っているエラーは、あなたの親切な配慮のために以下に与えられます。クラスクローラを実行する際に問題が発生しました
スクリプト:
import requests
from lxml.html import fromstring
class TextParser(object):
def __init__(self):
self.link = 'https://en.wikipedia.org/wiki/Main_Page'
self.storage = None
def fetch_url(self):
self.storage = requests.get(self.link).text
def get_text(self):
root = fromstring(self.storage)
for post in root.cssselect('a'):
print(post.text)
item = TextParser()
item.get_text()
エラー:
Traceback (most recent call last):
File "C:\Users\mth\AppData\Local\Programs\Python\Python35-32\testmatch.py", line 38, in <module>
item.get_text()
File "C:\Users\mth\AppData\Local\Programs\Python\Python35-32\testmatch.py", line 33, in get_text
root = fromstring(self.storage)
File "C:\Users\mth\AppData\Local\Programs\Python\Python35-32\lib\site-packages\lxml\html\__init__.py", line 875, in fromstring
is_full_html = _looks_like_full_html_unicode(html)
TypeError: expected string or bytes-like object
ありがとうございました。ジョナサン、それは今動作します。すぐに回答として受け入れるつもりです。 fetch_url()を呼び出さずにスクレーパーを実行する方法についてのアドバイスを無視しないでください。これが私が最初に試したことです。ありがとうございました。 – shayan
さて、関数get_textでfetch_urlを呼び出すことができます。 – Jonathan
ありがとうございました。これはそれだった。 – shayan