首页 > 其他分享 >Spider爬虫

Spider爬虫

时间:2023-04-13 17:55:05浏览次数:32  
标签:info xpath text detail Spider li 爬虫 extract

爬虫Spider

该爬虫分为两部分,分别为Spider.py和model.py

Spider.py

该文件主要业务逻辑是调用Selenium来通过自动化测试的方法实现模拟人的行为来对网页进行请求,并将请求到的HTML提取为文本,为后续的数据抽取做铺地。需要的第三方工具包Selenium,scrapy,time

spider.py具体实现

from selenium import webdriver  # 使用chromedriver必需
from scrapy import Selector  # 使用Selector
import time  # TimeSleep休眠
from Interests.models import *      #表示models文件处于Interests文件夹下
from selenium.common.exceptions import *
​
domin = "https://detail.zol.com.cn/motherboard"
broswer = webdriver.Chrome(executable_path="C:\MyApplications\chromedriver.exe")
​
url_list = []  # 设置列表用于存放product_url
​
def Get_Url():
    broswer.get(domin)
    sel = Selector(text=broswer.page_source)
    info = sel.xpath("//ul[@class='clearfix']/li/a/@href").extract()
    for i in info:
        product_url = 'https://detail.zol.com.cn' + i
        print(product_url)
        url_list.append(product_url)
​
def Get_Info():
    for a in url_list:
        broswer.get(a)
        detail = Selector(text=broswer.page_source)  # 获取到单个商品的详情页面
        name = detail.xpath("//h1/text()").extract()[0]
        core = detail.xpath("//ul/li[1]/p[1]/text()").extract()[0]
        radio_core = detail.xpath("//ul/li[1]/p[2]/text()").extract()[0]
        ram_type = detail.xpath("//ul/li[2]/p[1]/text()").extract()[0]
        max_ram = detail.xpath("//ul/li[2]/p[2]/text()").extract()[0]
        appear_size = detail.xpath("//ul/li[3]/p[1]/text()").extract()[0]
        broad_type = detail.xpath("//ul/li[3]/p[2]/text()").extract()[0]
        energy_socket = detail.xpath("//ul/li[4]/p[1]/text()").extract()[0]
        charge_mode = detail.xpath("//ul/li[4]/p[2]/text()").extract()[0]
​
        info = Info()
        info.name = name
        info.core = core
        info.radio_core = radio_core
        info.ram_type = ram_type
        info.max_ram = max_ram
        info.appear_size = appear_size
        info.broad_type = broad_type
        info.energy_socket = energy_socket
        info.charge_mode = charge_mode
​
        info.save(force_insert=True)
​
if __name__ == "__main__":
    t1 = Get_Url()
    t2 = Get_Info()
​
    time.sleep(3)
    t1.start()
    t2.start()

 


models.py

models.py的主要功能是链接数据库,但是数据库中的表格不必是提前建立好的。通过peewee第三方工具包创建一个指定数据库的基础模型类。其指定数据库中数据类型可以为CharField,TextField,DateField等。

models具体代码实现
from peewee import *
​
db = MySQLDatabase("demo", host="127.0.0.1", port=3306, user="root", password="123456")
​
# 创建一个指定数据库的基础模型类。
# 定义一个建立数据库连接的基础模型类,这样就不必为后续模型指定数据库
class BaseModel(Model):
    class Meta:
        database = db
​
class Info(BaseModel):
    name =  CharField()
    core = CharField()
    radio_core = TextField()
    ram_type = TextField()
    max_ram = CharField()
    appear_size = TextField()
    broad_type = TextField()
    energy_socket = TextField()
    charge_mode = TextField()
​
if __name__ == "__main__":
    db.create_tables([Info])

 


 

标签:info,xpath,text,detail,Spider,li,爬虫,extract
From: https://www.cnblogs.com/liam-sliversucks/p/17315883.html

相关文章

  • Python网络爬虫学习实战:爬虫快速入门
    很多同学私信问爬虫的相关教程,想了想,还是专门跟大家出些Python爬虫学习相关的教程,从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站的爬虫实战来进行。我们编写网络爬虫最主要的目的是爬......
  • 【0基础学爬虫】爬虫基础之数据存储
    大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章,为实现从易到难全方位覆盖,特设【0基础学爬虫】专栏,帮助小白快速入门爬虫,本期为数据存储。概述上期我们介绍到了文件......
  • 【0基础学爬虫】爬虫基础之数据存储
    大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章,为实现从易到难全方位覆盖,特设【0基础学爬虫】专栏,帮助小白快速入门爬虫,本期为数据存储。概述上期我们介绍到了文件......
  • 如何利用Socks5代理防止爬虫被封禁
      在当前互联网环境下,爬虫已经成为了许多企业和个人获取信息的重要途径。然而,很多网站都设置了反爬虫机制,导致许多爬虫被封禁或者被限制访问。在这种情况下,利用Socks5代理是一个不错的解决方案。  Socks5代理是一种网络协议,它能够将网络请求通过代理服务器进行转发。Socks5......
  • Python爬虫之多线程加快爬取速度
    之前我们学习了动态翻页我们实现了网页的动态的分页,此时我们可以爬取所有的公开信息了,经过几十个小时的不懈努力,一共获取了16万+条数据,但是软件的效率实在是有点低了,看了下获取10万条数据的时间超过了56个小时,平均每分钟才获取30条数据。注:软件运行的环境的虚拟主机,CPU:......
  • python爬虫(四):文本、图片、视频爬取实例
    上篇讲了常用的python爬虫工具,可以快速支撑我们数据的爬取--解析--分析,这里将拆解几个爬虫程序实例进行学习,实例来自于https://cuijiahua.com/blog/2020/04/spider-6.html的系列教程或者其他小爬虫;一、文本图表数据抓取(编程语言排名)#!/usr/bin/envpython#coding:utf-8importr......
  • Python爬虫之循环爬取多个网页
    之前的文中介绍了如何获取给定网址的网页信息,并解析其中的内容。本篇将更进一步,根据给定网址获取并解析给定网址及其相关联网址中的内容。要实现这些功能,我们需要解决以下问题:1、如何持续不断的获取url,并读取相关内容。2、如何判断网址是否已经读取过。文中用到的代码均已上传......
  • python爬虫案列11:爬取双色球历史开奖记录并存储到mysql
    开始之前要先在MySQL创建一个名为spider的数据库,在里面创建一个名caipiao的表,表里面三个字段,data,red,blue点击查看代码importrequestsimportpymysqlfromlxmlimportetree#连接数据库conn=pymysql.connect(host='localhost',port=3306,user='root',password='......
  • 爬虫案列10:python 连接mysql
    importpymysql#打开数据库连接db=pymysql.connect(host='localhost',user='root',password='root',database='pikachu',port=3306......
  • node爬虫实践总结
    网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。随着web2.0时代的到来,数据的价值愈发体现出来。无论是在目前火热的人工智能方向,还是在产品侧的用户需求分析,都需要获取到大量的数据,而网络爬虫作......