js 爬虫抓取网页数据(静态网页爬取文章目录(一):蚂蚁、自动索引、模拟程序或者蠕虫)

优采云 发布时间: 2022-03-04 11:20

  js 爬虫抓取网页数据(静态网页爬取文章目录(一):蚂蚁、自动索引、模拟程序或者蠕虫)

  静态网页抓取

  文章目录

  前言

  网络爬虫(也称为网络蜘蛛、网络机器人,在 FOAF 社区中更常称为网络追逐者)是根据一定规则自动从万维网上爬取信息的程序或脚本。其他不太常用的名称是 ant、autoindex、emulator 或 worm。.

  一、静态网站分析

  示例网站:

  任务要求:

  第一步获取主要食物类别

  

  第二步,获取所有分类中的所有分页成分

  

  第三步,获取所有分类的所有分页成分的营养成分和营养比例

  

  二、需要的依赖和插件1.引入库

  代码如下(示例):

  from asyncio.windows_events import NULL

import requests

import mysql.connector

import datetime

from lxml import etree

from bs4 import BeautifulSoup

from selenium import webdriver

  插件:phantomjs.exe

  插件:XPath

  插件介绍:

  PhantomJS 是一个可编程的无头浏览器。

  Headless browser:一个完整​​的浏览器内核,包括js解析引擎、渲染引擎、请求处理等,但不包括显示和与用户交互的浏览器。

  2.PhantomJS 使用场景

  PhantomJS 的适用范围是无头浏览器的适用范围。通常无头浏览器可用于页面自动化、网络监控、网络爬取等:

  页面自动化测试:希望能自动登录网站做一些操作,然后检查结果是否正常。

  网页监控:希望定期打开页面查看网站是否可以正常加载,加载结果是否符合预期。加载速度等等。

  网络爬虫:获取js下载并渲染页面中的信息,或者使用js跳转后获取链接的真实地址。

  ———————————————

  版权声明:本文为CSDN博主“violetgo”的原创文章,遵循CC4.0 BY-SA版权协议。转载请附上原文出处链接和本声明。

  原文链接:

  三、代码显示

  第一步获取主要食物类别

  使用XPath插件查找需要爬取的html组件

  

  response = requests.get(url="http://fitness.39.net/food/")

response.encoding = 'utf-8'

# 获取一级分类的数据

html = etree.HTML(response.text)

print(html.xpath("//dl[@id='food_ele_dl_id']//dd//a" ))

items = html.xpath("//dl[@id='food_ele_dl_id']//dd//a" )

data_time=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") #系统时间

val = []

val1 = []

# 遍历items的集合

for item in items:

title = "".join(item.xpath("./@title"))

href = "".join(item.xpath("./@href"))

val.append((title,href,data_time))

# print(html.xpath("" ))

print(val)

mydb = mysql.connector.connect(

host="11.11.11.111",

user="root",

passwd="123456",

database="python"

)

mycursor = mydb.cursor()

#删除旧的食材分类数据

sql = "DELETE FROM p_food_type "

mycursor.execute(sql)

mydb.commit()

print(mycursor.rowcount, " 条记录删除")

#插入新数据

sql = "INSERT INTO p_food_type (title, url,create_time) VALUES (%s, %s, %s)"

mycursor.executemany(sql, val)

mydb.commit() # 数据表内容有更新,必须使用到该语句

print(mycursor.rowcount, "记录插入成功。")

  

  

  第二步,获取大类中的所有子类,包括分页

  分析如何获取分页

  晶粒分析示例

  

  

  通过图片我们可以找到分页的规则。

  然后我们可以通过循环分类的url并将url拼接成页面来请求数据,直到拼接的url不请求数据。我们判断是最后一页,跳出这个类别,进入下一个类别。

<p>

#查询大类表

setsql = "SELECT * FROM p_food_type "

mycursor.execute(setsql)

myresult = mycursor.fetchall()

n = 100

sum = 0

counter = 1

#循环大类表

for x in myresult:

counter=1

while counter

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线