Hướng dẫn web crawler python code - mã python trình thu thập thông tin web

Nội dung chính ShowShow

  • 1. Tạo project Scrapy
  • B1. Trong file items.py chúng ta sẽ viết code thêm như sau:
  • B2. Trong spiders/ tạo một file tên là crawler_spider.py với nội dung như sau:
  • B3. Giờ mình muốn xuất ra một file lưu giữ liệu tên là comments mình sẽ chạy lệnh sau

Đã đăng vào thg 3 20, 2019 9:48 SA 3 phút đọc 3 phút đọc

Trong bài viết này mình sẽ giới thiệu cho các bạn một thư viện rất hữu ích của python khi mà chúng ta muốn crawl dữ liệu từ các trang web. Giả sử thế này, bây giờ bạn là quản lí của thế giới di dộng và bạn muốn biết khách hàng nghĩ thế nào về một sản phẩm mà bạn đã đăng lên. Với trường hợp này thì các bạn sẽ biết được điều đó qua các bình luận, nhưng các bạn muốn xem dữ liệu dạng thống kê báo cáo chứ không phải lên trang web đọc từng bình luận. Lúc này thì scrapy có thể giúp bạn crawl dữ liệu bình luận của user, và xuất dạng json, csv... Giờ bắt tay vào làm nhé

1. Tạo project Scrapy

  • B1. Trong file items.py chúng ta sẽ viết code thêm như sau:
  • B2. Trong spiders/ tạo một file tên là crawler_spider.py với nội dung như sau:
scrapy startproject crawler

B3. Giờ mình muốn xuất ra một file lưu giữ liệu tên là comments mình sẽ chạy lệnh sau

crawler/
    crawler/             # project's Python module, you'll import your code from her
        spiders/          # a directory where you'll later put your spiders
            __init__.py
        __init__.py
        items.py          # project items definition file
        middlewares.py    # project middlewares file
        pipelines.py      # project pipelines file
        settings.py       # project settings file
    scrapy.cfg            # deploy configuration file

Đã đăng vào thg 3 20, 2019 9:48 SA 3 phút đọc

Trong bài viết này mình sẽ giới thiệu cho các bạn một thư viện rất hữu ích của python khi mà chúng ta muốn crawl dữ liệu từ các trang web. Giả sử thế này, bây giờ bạn là quản lí của thế giới di dộng và bạn muốn biết khách hàng nghĩ thế nào về một sản phẩm mà bạn đã đăng lên. Với trường hợp này thì các bạn sẽ biết được điều đó qua các bình luận, nhưng các bạn muốn xem dữ liệu dạng thống kê báo cáo chứ không phải lên trang web đọc từng bình luận. Lúc này thì scrapy có thể giúp bạn crawl dữ liệu bình luận của user, và xuất dạng json, csv... Giờ bắt tay vào làm nhé

B1. Trong file items.py chúng ta sẽ viết code thêm như sau:

import scrapy

class CrawlerItem(scrapy.Item):
    # define the fields for your item here like:
    
    User = scrapy.Field()
    Comment = scrapy.Field()
    Time = scrapy.Field()

B2. Trong spiders/ tạo một file tên là crawler_spider.py với nội dung như sau:

B2. Trong spiders/ tạo một file tên là crawler_spider.py với nội dung như sau:

from scrapy import Spider
from scrapy.selector import Selector
from crawler.items import CrawlerItem

class CrawlerSpider(Spider):
    name = "crawler"
    allowed_domains = ["thegioididong.com"]
    start_urls = [
        "https://www.thegioididong.com/dtdd/samsung-galaxy-a50",
    ]

    def parse(self, response):
        questions = Selector(response).xpath('//ul[@class="listcomment"]/li')

        for question in questions:
            item = CrawlerItem()

            item['User'] = question.xpath(
                'div[@class="rowuser"]/a/strong/text()').extract_first()
            item['Comment'] = question.xpath(
                'div[@class="question"]/text()').extract_first()
            item['Time'] = question.xpath(
                'div[@class="actionuser"]/a[@class="time"]/text()').extract_first()

            yield item

B3. Giờ mình muốn xuất ra một file lưu giữ liệu tên là comments mình sẽ chạy lệnh sau => Inspect để xem cấu trúc html trong thẻ

    bên trong có các thẻ li, mỗi li chứa thông tin 1 bình luận.

    Đã đăng vào thg 3 20, 2019 9:48 SA 3 phút đọc

    <li class="comment_ask" id="33467716">
       <div class="rowuser">
           <a href="javascript:void(0)"><div>h</div><strong onclick="selCmt(33467716)">Nguyen Thi Ngan Ha</strong></a>
       </div>
       <div class="question">Hiện tại có máy chưa ạ</div>
       <div class="actionuser" data-cl="0"><a href="javascript:void(0)" class="respondent" onclick="cmtaddreplyclick(33467716)">Trả lời</a>
           <a href="javascript:void(0)" class="time" onclick="cmtReport(33467716)">1 phút trước </a>
       </div>
       <div class="replyLate">Quản trị viên sẽ phản hồi bình luận của chị Nguyen Thi Ngan Ha trong vòng 15 phút.</div>
       <div class="listreply hide" id="r33467716"></div><div class="inputreply hide"></div>
    </li>
    

    Trong bài viết này mình sẽ giới thiệu cho các bạn một thư viện rất hữu ích của python khi mà chúng ta muốn crawl dữ liệu từ các trang web. Giả sử thế này, bây giờ bạn là quản lí của thế giới di dộng và bạn muốn biết khách hàng nghĩ thế nào về một sản phẩm mà bạn đã đăng lên. Với trường hợp này thì các bạn sẽ biết được điều đó qua các bình luận, nhưng các bạn muốn xem dữ liệu dạng thống kê báo cáo chứ không phải lên trang web đọc từng bình luận. Lúc này thì scrapy có thể giúp bạn crawl dữ liệu bình luận của user, và xuất dạng json, csv... Giờ bắt tay vào làm nhé => lấy tên người bình luận

    Việc cài đặt python, thư viện scrapy các bạn follow trên trang chủ scrapy: http://doc.scrapy.org/en/latest/intro/install.html trên này đã hướng dẫn từng bước cho các bạn cài đăt. => lấy nội dung bình luận

    Tiếp theo chúng ta sẽ tạo một project mà minh đặt tên nố là crawler với câu lệnh sau: => lấy thời gian bình luận

    B3. Giờ mình muốn xuất ra một file lưu giữ liệu tên là comments mình sẽ chạy lệnh sau

    file json:
    scrapy crawl crawler -o comments.json
    hoặc file csv:
    scrapy crawl crawler -o comments.csv
    

    Đã đăng vào thg 3 20, 2019 9:48 SA 3 phút đọc

    Trong bài viết này mình sẽ giới thiệu cho các bạn một thư viện rất hữu ích của python khi mà chúng ta muốn crawl dữ liệu từ các trang web. Giả sử thế này, bây giờ bạn là quản lí của thế giới di dộng và bạn muốn biết khách hàng nghĩ thế nào về một sản phẩm mà bạn đã đăng lên. Với trường hợp này thì các bạn sẽ biết được điều đó qua các bình luận, nhưng các bạn muốn xem dữ liệu dạng thống kê báo cáo chứ không phải lên trang web đọc từng bình luận. Lúc này thì scrapy có thể giúp bạn crawl dữ liệu bình luận của user, và xuất dạng json, csv... Giờ bắt tay vào làm nhé

    Việc cài đặt python, thư viện scrapy các bạn follow trên trang chủ scrapy: http://doc.scrapy.org/en/latest/intro/install.html trên này đã hướng dẫn từng bước cho các bạn cài đăt.

    Tiếp theo chúng ta sẽ tạo một project mà minh đặt tên nố là crawler với câu lệnh sau: http://doc.scrapy.org/en/latest/intro/install.html

    http://doc.scrapy.org/en/latest/intro/tutorial.html#

    khi đó project chúng ta vừa tạo sẽ có cấu trúc như sau: