今日は BeautifulSoup と Requests API をいじっていました。そこで、深さ 2 までのリンクをたどる単純なスクレーパーを作成しようと考えました (それが理にかなっている場合)。私がスクレイピングしているWebページのすべてのリンクは相対的です。(例:<a href="/free-man-aman-sethi/books/9788184001341.htm" title="A Free Man">
)したがって、それらを絶対にするために、を使用してページのURLを相対リンクに結合すると思いましたurljoin
。
これを行うには、最初にタグから href 値を抽出する<a>
必要があり、そのために次を使用すると考えましたsplit
。
#!/bin/python
#crawl.py
import requests
from bs4 import BeautifulSoup
from urlparse import urljoin
html_source=requests.get("http://www.flipkart.com/books")
soup=BeautifulSoup(html_source.content)
links=soup.find_all("a")
temp=links[0].split('"')
これにより、次のエラーが発生します。
Traceback (most recent call last):
File "test.py", line 10, in <module>
temp=links[0].split('"')
TypeError: 'NoneType' object is not callable
ドキュメントを適切に読む前に、これはおそらく私の目的を達成するための最良の方法ではないことに気付きましたが、なぜ TypeError が発生するのでしょうか?