python爬虫

Python3爬虫使用requests爬取lol英雄皮肤

ε祈祈猫儿з 提交于 2020-02-26 10:06:53
此次爬取lol英雄皮肤一共有两个版本,分别是多线程版本和非多线程版本。 多线程版本 # !/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2/25/2020 2:24 PM # @Author : XiaoXia # @Blog : https://xiaoxiablogs.top # @File : lol_hero_photo.py import datetime import requests import simplejson import os import threading # 多线程版本 class HeroImage ( threading . Thread ) : # lol英雄获取英雄皮肤列表网站 url_demo = "https://game.gtimg.cn/images/lol/act/img/js/hero/" # 设置ua ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36" headers = { 'User-Agent' : ua } def __init__ ( self , hero_id ,

零基础入门python爬虫(一)

不问归期 提交于 2020-02-26 09:53:06
✍写在前面 : 欢迎加入纯干货技术交流群Disaster Army:317784952 接到5月25日之前要交稿的任务我就一门心思想写一篇爬虫入门的文章,可是我并不会。还好有将近一个月的时间去学习,于是我每天钻在书和视频教程里。其实并不难的,我只是想做到能够很好的理解它并用自己的语言较好的表达出来,也许你将看到的是史上最不专业的技术交流文章,没错这就是我想要的。我力求能让没有编程基础同我一样爱黑客技术却苦于看不到出路的同学们在24小时之内明白爬虫是怎么一回事。我想这才是我加入中国红客联盟太极实验室在红客精神的号召下做的有意义的事。学习技术一定要学会付出、开源、共享、互助,很多大牛似乎不愿意这么做了,我们入门小菜鸟只要够团结,乐于奉献就一定可以达到1+1>2的双赢效果。总之共同努力吧! ☝第一章 0x00 python****的认识、安装 官面上的话自行去百度,这里我只介绍我所掌握到的、最重要的信息。 特点: (1)跨平台开发 (2)以语法简洁清晰著称 (3)缩进控制严格 至于说爬虫需不需要编程基础,不用多说,君不见本屌在这个月之前的n多个月里是多么苦苦的啃教程,对么下三赖的求指点。其实自学的进步速度太慢了,此文也希望看到的码阔多多提点! 更多信息: python百度百科 安装也是极易的,只是有python2.7和python3需要纠结选一下。菜菜也不多做建议了,各有所长

拒绝低效!Python教你爬虫公众号文章和链接

瘦欲@ 提交于 2020-02-26 09:37:45
本文首发于公众号「Python知识圈」,如需转载,请在公众号联系作者授权。 前言 上一篇文章整理了的公众号所有文章的导航链接,其实如果手动整理起来的话,是一件很费力的事情,因为公众号里添加文章的时候只能一篇篇的选择,是个单选框。 面对几百篇的文章,这样一个个选择的话,是一件苦差事。 pk哥作为一个 Pythoner,当然不能这么低效,我们用爬虫把文章的标题和链接等信息提取出来。 抓包 我们需要通过抓包提取公众号文章的请求的 URL,参考之前写过的一篇抓包的文章 Python爬虫APP前的准备 ,pk哥这次直接抓取 PC 端微信的公众号文章列表信息,更简单。 我以抓包工具 Charles 为例,勾选容许抓取电脑的请求,一般是默认就勾选的。 为了过滤掉其他无关请求,我们在左下方设置下我们要抓取的域名。 打开 PC 端微信,打开 「Python知识圈」公众号文章列表后,Charles 就会抓取到大量的请求,找到我们需要的请求,返回的 JSON 信息里包含了文章的标题、摘要、链接等信息,都在 comm_msg_info 下面。 这些都是请求链接后的返回,请求链接 url 我们可以在 Overview 中查看。 通过抓包获取了这么多信息后,我们可以写爬虫爬取所有文章的信息并保存了。 初始化函数 公众号历史文章列表向上滑动,加载更多文章后发现链接中变化的只有 offset 这个参数

python多协程爬虫示例

谁说我不能喝 提交于 2020-02-26 05:24:50
写python协程时使用gevent模块和queue模块可以大大提高爬虫速度。在同时爬取多个网站时,原来用for循环一个网站一个网站按循序顺序爬,就像先烧饭后烧菜,两个步骤异步进行。使用多协程可以让爬虫自己选择爬取顺序,就像边烧饭边烧菜,两个步骤同步进行,速度自然快了。 不多说了,来看下代码吧: from gevent import monkey monkey.patch_all() #打上多协程布丁,下面的程序就可以执行多协程了 import requests,gevent,csv from gevent.queue import Queue from bs4 import BeautifulSoup #把所有URL都放到一个列表里: url_list=[] i=1 for i in range(10): i=i+1 url='http://www.mtime.com/top/tv/top100/index-'+str(i)+'.html' url_list.append(url) #第一个url和别的不一样,需要单独加入 url_0='http://www.mtime.com/top/tv/top100/' url_list.append(url_0) headers={ 'User-Agent': } csv_file=open('时光网电影列表.csv','a+'

python58同城爬虫

淺唱寂寞╮ 提交于 2020-02-26 05:24:44
import requests,time,csv from bs4 import BeautifulSoup href_list=[] url='https://hz.58.com/lvguanbinguan' headers={ 'user-agent': } params={ 'PGTID': '0d306b32-0004-f711-87c6-3e3cb7371c0d', 'ClickID': '2' } res=requests.get(url,headers=headers,params=params) soup=BeautifulSoup(res.text,'html.parser') titles=soup.find_all('h2',class_="title") for title in titles: href=title.find('a')['href'] print(href) href_list.append(href) csv_file=open('58同城酒店转让项目信息.csv','w+',newline='',encoding='utf-8') writer=csv.writer(csv_file) file_head=['项目名','联系人','联系电话','信息','地址'] writer.writerow(file_head) hotel

python爬虫(六) Cookie

杀马特。学长 韩版系。学妹 提交于 2020-02-25 20:56:36
什么是Cookie 在网站中,http的请求通常是无状态的(第一个和服务器连接并且登录之后,此时服务器知道是哪个用户,但是当第二次请求服务器时,服务器依然不知道当前请求的是哪个用户),cookie就是为了解决这个问题,第一次登录服务器后,服务器会返回与刚刚用户相关的数据(也就是cookie)给浏览器,浏览器将cookie保存在本地,当这个用户第二次请求服务器时,就会把上次存储的cookie自动携带给服务器,服务器通过这个cookie就知道当前是哪个用户。cookiede存储数据有限,不同的浏览器存储大小不同。一般不超过4kb。 在一些爬虫中,我们在进入一个页面之前需要先登录,比如人人网,我们想要在人人网中浏览大鹏的主页,就要先注册登录,然后才能浏览,那么在爬虫时,如何保持登录状态呢? 就需要在请求头中加入cookie。 我们在页面中右击-选择查看元素-然后选择network-刷新选择第一个profile-然后找到cookie 把cookie放到外我们代码的请求头中 # 使用cookie如何保持登录 from urllib import request dapeng_url='http://www.renren.com/880151247/profile' headers={ 'User-Agent':"Mozilla/5.0 (Windows NT 10.0; WOW64)

Python框架爬虫——Scrapy爬取当当网选定店铺的全部信息。保存至本地(csv、MongoDB )

我的梦境 提交于 2020-02-25 20:23:44
文章目录 一、创建项目 二、爬取子页面链接 三、设置每本书要爬取的Item(Items.py) 四、爬虫解析页面(spider.py) 五、将爬取内存保存至本地(piplines.py) 1、保存数据到MongoDB 2、保存到csv 六、查看、清洗数据,开始数据分析 一、创建项目 开始之前我们先建立项目 1、命令行输入 scrapy startproject dangdang 创建dangdang项目文件夹 2、命令行输入 cd dangdang 进入刚刚创建的目录中 3、命令行输入 scrapy genspider spider "http://store.dangdang.com/282"生成我们的爬虫文件。 二、爬取子页面链接 创建项目完毕后我们开始分析网页(Chrome浏览器F12打开开发者模式),鼠标移到我们需要的字段的位置,可以看到源码,再复制XPath(如下图)。 //*[@id="sidefloat"]/div[2]/div/div/map/area/@href 可以看到最左边的分栏给出了所有的分类,那么我们依次爬取文学、小说等等每个页面的内容即可。 我们先记录下这个的Xpath。 三、设置每本书要爬取的Item(Items.py) 那么对于每本书我们需要爬取的内容已经框选出来了 分别为价格、评论数量(销量)、书名、作者、分类(也就是上一步获取的内容)

非常适合新手的一个Python爬虫项目: 打造一个英文词汇量测试脚本!

允我心安 提交于 2020-02-25 08:05:15
最近朋友在苦学英文,但是又不知道自己学的怎么样了,直到有一天,他找到了扇贝网,里面有个“评估你的单词量”功能非常的好,就推荐给我了! 今天我们就用python做一个小的爬虫,然后自己写一个脚本来实现这个功能吧! 目标:打造一个英文词汇量测试脚本 url:扇贝网 工具:python3.6、pycharm、requests库 思路: 和网页一样,总共分三步: 先来看看网页中数据,用F12开发者工具抓包就可以 为了更好的演示,这里网页缩小了。 点击开始,在来看看出现了什么 这里我们抓到了一个包,这个json数据中包含了所有的类别或者说是级别,一共十大类,我们点击”响应”验证下 可以看到,显示内容在我们抓到的json数据中,但是0和1中的内容有的一样,有的不一样是什么鬼?不要急,我们先选择‘高考’,在抓下包看看 选择高考后,网页直接给出了第二步,50个单词选择,注意,先看下抓到的json数据的真实地址 还记得我们在第一步抓到的包吗?0里面就是这个真实地址最后的category的值,1里面是对应的显示在网页中的内容,好了,第二步的真实url也被我们找到规律了,那下来就是分析单词了,看看有什么规律,我们点开一个看看 有几个值非常重要,也是我们的目标: Content的值是显示的单词 Definition_choices是需要我们判断的多个词义,中间包含有正确的词义

python爬虫(二) urlparse和urlsplit函数

匆匆过客 提交于 2020-02-24 20:02:53
urlparse和urlsplit函数: urlparse: url='http://www.baidu.com/s?wd=python&username=abc#1' result=parse.urlparse(url) print(result) 输入的结果为解析之后的各部分 输出对应的参数: url='http://www.baidu.com/s?wd=python&username=abc#1' result=parse.urlparse(url) # print(result) print('scheme:',result.scheme) print('netloc:',result.netloc) print('path:',result.path) print('params:',result.params) print('query:',result.query) print('fragment:',result.fragment) 结果就是输入的网址各个部分 urlsplit: url='http://www.baidu.com/s?wd=python&username=abc#1' result=parse.urlsplit(url) print(result) 这个里面没有params这个参数 因为在urlparse中, 在这个网址问好前面加一个分号

多进程爬虫python——实例爬取酷狗歌单

天大地大妈咪最大 提交于 2020-02-24 14:22:33
多线程和多进程概述:当计算机运行程序时,就会创建包含代码和状态的进程。这些进程会通过计算机的一个或多个CPU执行。不过,同一时刻一个CPU只能执行一个进程,然后在不同进程间快速切换,这样就给人以多个程序同时运行的感觉。同理,在一个进程中,程序的执行也是在不同线程间进行切换的,每个线程执行程序的不同部分。例如,一个工厂(网络爬虫)有多个车间(进程)负责不同的功能,一个车间又有多个车间工人(线程)协同合作,效率大大提升。 from multiprocessing import Pool pool=Pool(processes= num)#创建进程池,num为进程个数 pool.map(func,iterable)#func为爬虫函数,iterable为迭代参数,爬虫中,可为多个url列表进行迭代 实例:爬取酷狗歌单(做测试只返回不储存) import requests #用于请求网页获取网页数据 from bs4 import BeautifulSoup #解析网页数据 import time #time库中的sleep()方法可以让程序暂停 import csv from multiprocessing import Pool ''' 爬虫测试_多进程 酷狗top500数据 写入csv文件 ''' ''' fp = open('D://kugou.csv','wt',newline=