Соскребание экрана в Python - PullRequest
3 голосов
/ 30 июня 2011

Я новичок во всей концепции скриншота экрана в Python, хотя я немного поэкспериментировал с R. Я пытаюсь почистить сайт Yelp. Я пытаюсь вычеркнуть названия каждого страхового агентства, которое выдает поиск в визг. С большинством скребущих задач я могу выполнить следующую задачу, но мне всегда будет трудно разобраться с xml.

import urllib2
from BeautifulSoup import BeautifulSoup

soup = BeautifulSoup(urllib2.urlopen('http://www.yelp.com/search?find_desc=insurance+agency&ns=1&find_loc=Austin').read())

print soup

Так что, при очистке сайта, какие шаги нужно выполнить? Есть ли набор необходимых действий, которые нужно выполнять каждый раз, когда они пытаются очистить сайт?

Я использую Python 2.6 в Ubuntu 10.10

Я понимаю, что это может быть плохой вопрос SO, как изложено в часто задаваемых вопросах, но я надеюсь, что кто-то может предоставить некоторые общие рекомендации и вещи, которые следует учитывать при очистке сайта.

Ответы [ 3 ]

4 голосов
/ 30 июня 2011

Я бы порекомендовал прочитать на xpath и попробовать этот учебник по scrapy.http://doc.scrapy.org/intro/tutorial.html.Довольно просто написать такого паука, как этот

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector

class DmozSpider(BaseSpider):
    name = "dmoz.org"
    allowed_domains = ["dmoz.org"]
    start_urls = [
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
    ]
def parse(self, response):
    hxs = HtmlXPathSelector(response)
    sites = hxs.select('//ul/li')
    for site in sites:
        title = site.select('a/text()').extract()
        link = site.select('a/@href').extract()
        desc = site.select('text()').extract()
        print title, link, desc
2 голосов
/ 01 декабря 2012

Возможно, у вас возникли проблемы с анализом контента, который динамически генерируется с помощью JavaScript.Я написал небольшое руководство на эту тему, это может помочь:

http://koaning.github.io/html/scapingdynamicwebsites.html

По сути, у вас есть библиотека селенов, притворяющаяся, что это браузер Firefox, браузер будет ждатьпока весь javascript не загрузится, прежде чем он продолжит передавать вам строку html.Получив эту строку, вы можете проанализировать ее с помощью Beautifulsoup.

2 голосов
/ 30 июня 2011

Для упрощения общих задач, связанных с очисткой экрана, существует среда Python " Scrapy "Это сделает HTML, XML разбор безболезненным.

...