萌新的Python学习日记 - 爬虫无影 - 使用BeautifulSoup + css selector 抓取动态网页内容:Knewone

博客第二天

测试页面:Knewone:https://knewone.com/discover?page=,

目的:爬取第一区类的title,img,各对象href,


工程内容:Python3.5,jupyter notebook

工具包:requests, BeautifulSoup,time,pandas

代码(可翻页):

import requests
from bs4 import BeautifulSoup as bs
import time
import pandas as pd
url = 'https://knewone.com/discover?page='
info = []                                                            #为存储信息做准备
def getpage(url,data = None):                          #定义抓取页面函数
    web = requests.get(url)                                #获取页面
    soup = bs(web.text,'lxml')                             #解析页面
    #print(soup)                                                  #打印以观察获取以及解析结果
    imgs = soup.select('a.cover-inner > img')      #定位图片链接位置
    titles = soup.select('section.content > h4 > a')   #定位titles位置
    links = soup.select('section.content > h4 > a')   #定位对象超链位置,此处非实际链接,需加上前缀内容
    if data==None:                                                ···
        for img,title,link in zip(imgs,titles,links):           
            data = {
                'img' : img.get('src'),                             
                'title' : title.get('title'),                          #利用data存储信息
                'link' : link.get('href')                          
            }
            info.append(data)                                       ···
            print(data)
def getmorpages(start,end):                               #定义翻页函数
    for one in range(start,end):
        getpage(url+str(one))
        time.sleep(1)
getmorpages(1,10)                                             #调用函数


df = pd.DataFrame(info)                                    #存储为本地文件
df.to_csv('1-3练习-爬取动态网页.csv')

print结果(部分):


csv截图(部分):


内容:共有108项,每页12个对象,共抓取9页(1-9)

error:无

总结:

    1. print及csv各项的顺序于data中设定的顺序不一样,此处疑问待解决

    2. 与css selector类似的定位方法,十分简洁

    3. 函数定义及使用,应仔细分析

    4. 代码中(if data == None :)语句功能暂时不知道,没有也能正常运行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值