스크래피를 사용하여 재귀 적으로 웹 사이트 스크랩

사용자 988544

웹 사이트를 재귀 적으로 크롤링해야합니다. 이것이 내가 지금 가지고있는 것입니다.

class DemoSpider(CrawlSpider):
    name = 'sample_recursive'
    allowed_domains = ['www.example.org']
    start_urls = [
        "http://example.org"
    ]

    rules = [Rule(SgmlLinkExtractor(allow=(r'/.org/site/ID/[\w*\W*]*'), deny=(r'.org/subscription')), callback='parse_start_url', follow=True)]
    def parse_start_url(self, response):
        items = []
        item = DemoSampleItem()
        item["source_url"] = response.url
        item["title"] = response.xpath('//div[@class="content-title"]/h2/text()')[0].extract()
        item["breadcrumb"] = response.xpath("//ul[@class='breadcrumbs']")[0].extract()
        item["content"] = response.xpath("//div[@class='main_col']")[0].extract()
        item["right_col"] = response.xpath("//div[@class='right_col']").extract()
        item["left_col"] = response.xpath("//div[@class='left_col']")[0].extract()
        item["depth"] = response.meta.get('depth', 0)
        items.append(item)

        return items

"example.org", "example.org/site/ID/home", "example.org/site/ID/Partners"및 "example.org/site/ID/home/과 같은 페이지를 긁어 내고 싶습니다. our-values ​​"를 입력 한 다음 각 항목 파이프 라인을 자체 항목으로 mysql db에 저장합니다.

class AcdiSamplePipeline(object):

    # connect
    db_connection = MySQLdb.connect(host='localhost', user='user', passwd='passwd', db='dbname'
                                    , charset='utf8', use_unicode=True)

    # create a database cursor
    cursor = db_connection.cursor()

    def process_item(self, item, spider):
        source_url = item["source_url"]
        title = item["title"].encode('utf-8')
        breadcrumb = item["breadcrumb"].encode('utf-8')
        content = item["content"].encode('utf-8')
        left_col = item["left_col"].encode('utf-8')
        right_col = item["right_col"].encode('utf-8')
        depth = item["depth"]

        try:
            self.cursor.execute("""INSERT INTO table_name (source_url, title, breadcrumb, content
                                , right_col, left_col, page_depth)
                                VALUES (%s, %s, %s, %s, %s, %s, %s)""",
                                (source_url
                                 , title
                                 , breadcrumb
                                 , content
                                 , right_col
                                 , left_col
                                 , depth))

            self.db_connection.commit()

        except MySQLdb.Error, e:
            print("--------------- Printing DB ERROR(s) -------------------")
            print "ERROR WHILE DB WRITE %d: %s" % (e.args[0], e.args[1])

        return item

그러나 현재로서는 데이터베이스에서 "example.org"를 스크래핑하고 저장하는 유일한 방법입니다. 왜 재귀 적으로 사이트를 통과하지 않는지 아십니까?

엘리아스 도넬 레스

LinkExtractor의 정규식이 잘못된 것 같습니다.

allow=(r'/.org/site/ID/[\w*\W*]*')
      #   ^--- this slash doesn't belong here.
      #   Plus, the dot should be escaped, else it matches any character

정규식을 더 좋아하는 것 같습니다.

allow=(r'[.]org/site/ID/.+')

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

스크래피를 사용하여 재귀 적으로 사이트 크롤링

분류에서Dev

Python을 사용하여 페이지를 재귀 적으로 스크랩 (스크랩)

분류에서Dev

JS를 사용하여 xml 웹 서비스를 재귀 적으로 호출

분류에서Dev

로그인 정보를 사용하여 Python으로 웹 사이트 스크랩

분류에서Dev

웹 크롤러를 사용하여 웹 사이트에 로그인 할 수 없음 (스크래피)

분류에서Dev

웹 사이트를 PDF로 변환 (재귀 적으로)

분류에서Dev

스크래피를 사용하여 로그인 인증 웹 사이트에서 데이터 추출

분류에서Dev

재귀 적으로 다른 URL을 호출하고 Python 용 스크래피를 사용하여 첫 번째 사이트 스크래핑이 완료 될 때까지 기다립니다.

분류에서Dev

Python을 사용한 웹 스크랩 핑 : RuntimeError 최대 재귀 깊이 초과

분류에서Dev

스크래피 : 웹 사이트의 모든 텍스트를 스크랩하고 하이퍼 링크의 텍스트는 스크랩하지 않음

분류에서Dev

rvest를 사용하여 양식으로 웹 사이트를 스크랩 할 수 없습니다.

분류에서Dev

자바 스크립트 동적 웹 사이트를 스크랩하는 방법

분류에서Dev

BeautifulSoup을 사용하여 OSHA 웹 사이트 스크랩하기

분류에서Dev

Python BeautifulSoup을 사용하여 OpenTable 웹 사이트 스크랩

분류에서Dev

스크래피를 사용하여 아이템 스크랩

분류에서Dev

다른 매개 변수를 사용하여 bash 스크립트를 재귀 적으로 호출

분류에서Dev

다른 매개 변수를 사용하여 bash 스크립트를 재귀 적으로 호출

분류에서Dev

프레임이있는 웹 사이트를 재귀 적으로 다운로드

분류에서Dev

Excel VBA를 사용하여 웹 사이트에서 텍스트 스크랩

분류에서Dev

jsoup 및 Android를 사용하여 웹 사이트의 링크 스크랩

분류에서Dev

스크래피를 사용하여 URL을 href = "javascript :;"로 숨기는 웹 사이트를 크롤링하는 방법 다음 버튼

분류에서Dev

공식 Playstation 웹 사이트에서 트로피 데이터 스크랩

분류에서Dev

PyQt5를 사용하여 보호 된 콘텐츠로 웹 사이트 스크랩

분류에서Dev

스레드를 사용하여 재귀 적으로 데이터 전달

분류에서Dev

Python을 사용하여 동적 페이지 액세스 및 웹 스크랩

분류에서Dev

자바 스크립트로 크롬 콘솔에서 웹 사이트 스크랩

분류에서Dev

동적 배열 기능을 사용하여 웹 사이트에서 데이터 스크랩-Excel VBA

분류에서Dev

스크래피 스플래시를 사용하여이 웹 사이트에서 동적으로로드 된 콘텐츠를 가져 오는 방법은 무엇입니까?

분류에서Dev

스크래피로 RSS에서 뉴스 웹 사이트 크롤링

Related 관련 기사

  1. 1

    스크래피를 사용하여 재귀 적으로 사이트 크롤링

  2. 2

    Python을 사용하여 페이지를 재귀 적으로 스크랩 (스크랩)

  3. 3

    JS를 사용하여 xml 웹 서비스를 재귀 적으로 호출

  4. 4

    로그인 정보를 사용하여 Python으로 웹 사이트 스크랩

  5. 5

    웹 크롤러를 사용하여 웹 사이트에 로그인 할 수 없음 (스크래피)

  6. 6

    웹 사이트를 PDF로 변환 (재귀 적으로)

  7. 7

    스크래피를 사용하여 로그인 인증 웹 사이트에서 데이터 추출

  8. 8

    재귀 적으로 다른 URL을 호출하고 Python 용 스크래피를 사용하여 첫 번째 사이트 스크래핑이 완료 될 때까지 기다립니다.

  9. 9

    Python을 사용한 웹 스크랩 핑 : RuntimeError 최대 재귀 깊이 초과

  10. 10

    스크래피 : 웹 사이트의 모든 텍스트를 스크랩하고 하이퍼 링크의 텍스트는 스크랩하지 않음

  11. 11

    rvest를 사용하여 양식으로 웹 사이트를 스크랩 할 수 없습니다.

  12. 12

    자바 스크립트 동적 웹 사이트를 스크랩하는 방법

  13. 13

    BeautifulSoup을 사용하여 OSHA 웹 사이트 스크랩하기

  14. 14

    Python BeautifulSoup을 사용하여 OpenTable 웹 사이트 스크랩

  15. 15

    스크래피를 사용하여 아이템 스크랩

  16. 16

    다른 매개 변수를 사용하여 bash 스크립트를 재귀 적으로 호출

  17. 17

    다른 매개 변수를 사용하여 bash 스크립트를 재귀 적으로 호출

  18. 18

    프레임이있는 웹 사이트를 재귀 적으로 다운로드

  19. 19

    Excel VBA를 사용하여 웹 사이트에서 텍스트 스크랩

  20. 20

    jsoup 및 Android를 사용하여 웹 사이트의 링크 스크랩

  21. 21

    스크래피를 사용하여 URL을 href = "javascript :;"로 숨기는 웹 사이트를 크롤링하는 방법 다음 버튼

  22. 22

    공식 Playstation 웹 사이트에서 트로피 데이터 스크랩

  23. 23

    PyQt5를 사용하여 보호 된 콘텐츠로 웹 사이트 스크랩

  24. 24

    스레드를 사용하여 재귀 적으로 데이터 전달

  25. 25

    Python을 사용하여 동적 페이지 액세스 및 웹 스크랩

  26. 26

    자바 스크립트로 크롬 콘솔에서 웹 사이트 스크랩

  27. 27

    동적 배열 기능을 사용하여 웹 사이트에서 데이터 스크랩-Excel VBA

  28. 28

    스크래피 스플래시를 사용하여이 웹 사이트에서 동적으로로드 된 콘텐츠를 가져 오는 방법은 무엇입니까?

  29. 29

    스크래피로 RSS에서 뉴스 웹 사이트 크롤링

뜨겁다태그

보관