2

Pythonで基本的なWebクローラーを作成しようとしています。私が抱えている問題は、URLを抽出するためにページを解析することです。私はBeautifulSoupと正規表現の両方を試しましたが、効率的な解決策を達成できません。

例として:FacebookのGithubページですべてのメンバーURLを抽出しようとしています。(https://github.com/facebook?tab=members)。私が書いたコードは、メンバーのURLを抽出します。

def getMembers(url):
  text = urllib2.urlopen(url).read();
  soup = BeautifulSoup(text);
  memberList = []
    #Retrieve every user from the company
    #url = "https://github.com/facebook?tab=members"

  data = soup.findAll('ul',attrs={'class':'members-list'});
  for div in data:
    links = div.findAll('li')
    for link in links:
          memberList.append("https://github.com" + str(link.a['href']))

  return memberList

ただし、これには解析にかなりの時間がかかり、クロールプロセスが長すぎるため、より効率的に解析できるかどうか疑問に思いました。

4

3 に答える 3

1

達成したいことを正確に実行できるGitHubAPIを使用することをお勧めします。その後、jsonパーサーを使用するだけで完了です。

http://developer.github.com/v3/orgs/members/

于 2012-11-12T16:29:13.527 に答える
1

自分でスクレーパーを書くのを防ぐために、利用可能なものを使用することができます。たぶんscrapyを試してみてください。Pythonを使用しており、githubで入手できます。 http://scrapy.org/

于 2012-11-12T17:53:09.313 に答える
0

Webページをクロールし、シードURLと深さに応じてすべての有効なハイパーリンクを収集するシンプルで理解しやすいPythonスクリプトについては、投稿Extremely SimpleWebCrawlerを確認してください。

于 2014-05-05T17:21:27.567 に答える