VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > python入门教程 >
  • Python 爬虫 - Scrapy框架原理

Python 爬虫包含两个重要的部分:正则表达式和Scrapy框架的运用, 正则表达式对于所有语言都是通用的,网络上可以找到各种资源。

如下是手绘Scrapy框架原理图,帮助理解

 

如下是一段运用Scrapy创建的spider:使用了内置的crawl模板,以利用Scrapy库的CrawlSpider。相对于简单的爬取爬虫来说,Scrapy的CrawlSpider拥有一些网络爬取时可用的特殊属性和方法:

$ scrapy genspider country_or_district example.python-scrapying.com--template=crawl

运行genspider命令后,下面的代码将会在example/spiders/country_or_district.py中自动生成。

复制代码
 1 # -*- coding: utf-8 -*-
 2 import scrapy
 3 from scrapy.linkextractors import LinkExtractor
 4 from scrapy.spiders import CrawlSpider, Rule
 5 from example.items import CountryOrDistrictItem
 6 
 7 
 8 class CountryOrDistrictSpider(CrawlSpider):
 9     name = 'country_or_district'
10     allowed_domains = ['example.python-scraping.com']
11     start_urls = ['http://example.python-scraping.com/']
12 
13     rules = (
14         Rule(LinkExtractor(allow=r'/index/', deny=r'/user/'),
15              follow=True),
16         Rule(LinkExtractor(allow=r'/view/', deny=r'/user/'),
17              callback='parse_item'),
18     )
19 
20     def parse_item(self, response):
21         item = CountryOrDistrictItem()
22         name_css = 'tr#places_country_or_district__row td.w2p_fw::text'
23         item['name'] = response.css(name_css).extract()
24         pop_xpath = '//tr[@id="places_population__row"]/td[@class="w2p_fw"]/text()'
25         item['population'] = response.xpath(pop_xpath).extract()
26         return item
复制代码

 

爬虫类包括的属性:

  • name: 识别爬虫的字符串。
  • allowed_domains: 可以爬取的域名列表。如果没有设置该属性,则表示可以爬取任何域名。
  • start_urls: 爬虫起始URL列表。
  • rules: 该属性为一个通过正则表达式定义的Rule对象元组,用于告知爬虫需要跟踪哪些链接以及哪些链接包含抓取的有用内容。

 

参考:

1. 正则表达式:《Python 爬虫 - 正则表达式》

2. 其他Python爬虫实践:

    • 视频链接:https://v.kuaishou.com/8raZJH

    •  视频代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 获取页面所有热点
import urllib.request
import json
from csv import DictWriter
import requests
import pandas as pd
 
 
#编辑循环:
docs =  list()
for in range(0,200):
    template_url = 'https://准备浏览的地址'%(i)
    req = urllib.request.Request(template_url)
    #获取URL
    NewsHtml= urllib.request.urlopen(template_url)
    NewsJSON = json.loads(NewsHtml.read())
    if len(NewsJSON["data"]['list']) != 0:
        #print(template_url)
        doc = NewsJSON["data"]['list']
        docs.append(doc)    
    else:
        print ("END")
        break  # 跳出当前循环
 
#写入本地
#列表
新闻名称 = list()
for in range(0,len(docs)):
    for in range(0,len(docs[i])):
        title = docs[i][a]['title']
        新闻名称.append(title)
 
 
#表格
df = pd.DataFrame(columns = ["新闻名称"])
df['新闻名称'= 新闻名称
 
 
#写入
df.to_csv('~/data/news2021Today.csv')

  

记录有用的信息和数据,并分享!
 
出  处:https://www.cnblogs.com/yxmings/p/14226696.html
 

相关教程