精华内容
下载资源
问答
  • 主要介绍了Python爬虫获取页面所有URL链接过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • Python爬虫入门项目

    万次阅读 多人点赞 2017-12-25 16:26:21
    Python是什么 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。 创始人Guido van Rossum是BBC出品英剧Monty Python’s Flying Circus(中文:蒙提·派森的...

    Python是什么

    Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。

    创始人Guido van Rossum是BBC出品英剧Monty Python’s Flying Circus(中文:蒙提·派森的飞行马戏团)的狂热粉丝,因而将自己创造的这门编程语言命名为Python。

    人生苦短,我用python,翻译自"Life is short, you need Python"

    Python英式发音:/ˈpaɪθən/ ,中文类似‘拍森’。而美式发音:/ˈpaɪθɑːn/,中文类似‘拍赏’。我看麻省理工授课教授读的是‘拍赏’,我觉得国内大多是读‘拍森’吧。

    2017年python排第一也无可争议,比较AI第一语言,在当下人工智能大数据大火的情况下,python无愧第一语言的称号,至于C、C++、java都是万年的老大哥了,在代码量比较方面,小编相信java肯定是完爆其它语言的。

    不过从这一年的编程语言流行趋势看,java依然是传播最多的,比较无论app、web、云计算都离不开,而其相对python而言,学习路径更困难一点,想要转行编程,而且追赶潮流,python已然是最佳语言。

    许多大型网站就是用Python开发的,国内:豆瓣、搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝、热酷、土豆、新浪、果壳…; 国外:谷歌、NASA、YouTube、Facebook、工业光魔、红帽…

    Python将被纳入高考内容

    浙江省信息技术课程改革方案已经出台,Python确定进入浙江省信息技术高考,从2018年起浙江省信息技术教材编程语言将会从vb更换为Python。其实不止浙江,教育大省北京和山东也确定要把Python编程基础纳入信息技术课程和高考的内容体系,Python语言课程化也将成为孩子学习的一种趋势。尤其山东省最新出版的小学信息技术六年级教材也加入了Python内容,小学生都开始接触Python语言了!!

    再不学习,又要被小学生完爆了。。。

     

    Python入门教程

    Python能做什么

    • 网络爬虫
    • Web应用开发
    • 系统网络运维
    • 科学与数字计算
    • 图形界面开发
    • 网络编程
    • 自然语言处理(NLP)
    • 人工智能
    • 区块链
    • 多不胜举。。。

    Python入门爬虫

    这是我的第一个python项目,在这里与大家分享出来~

    • 需求
      • 我们目前正在开发一款产品其功能大致是:用户收到短信如:购买了电影票或者火车票机票之类的事件。然后app读取短信,解析短信,获取时间地点,然后后台自动建立一个备忘录,在事件开始前1小时提醒用户。
    • 设计
      • 开始我们将解析的功能放在了服务端,但是后来考虑到用户隐私问题。后来将解析功能放到了app端,服务端只负责收集数据,然后将新数据发送给app端。
      • 关于服务端主要是分离出两个功能,一、响应app端请求返回数据。二、爬取数据,存入数据库。
      • 响应请求返回数据使用java来做,而爬取数据存入数据库使用python来做,这样分别使用不同语言来做是因为这两种语言各有优势,java效率比python高些,适合做web端,而爬取数据并不是太追求性能且python语言和大量的库适合做爬虫。
    • 代码
      • 本项目使用python3的版本
      • 获取源码:扫描下方关注微信公众号「裸睡的猪」回复:爬虫入门 获取
         

         

      • 了解这个项目你只需要有简单的python基础,能了解python语法就可以。其实我自己也是python没学完,然后就开始写,遇到问题就百度,边做边学这样才不至于很枯燥,因为python可以做一些很有意思的事情,比如模拟连续登录挣积分,比如我最近在写一个预定模范出行车子的python脚本。推荐看廖雪峰的python入门教程
      • 首先带大家看看我的目录结构,开始我打算是定义一个非常好非常全的规范,后来才发现由于自己不熟悉框架,而是刚入门级别,所以就放弃了。从简而入:
      • 下面咱们按照上图中的顺序,从上往下一个一个文件的讲解init.py包的标识文件,python包就是文件夹,当改文件夹下有一个init.py文件后它就成为一个package,我在这个包中引入一些py供其他py调用。

    init.py

    # -*- coding: UTF-8 -*-  
    
    # import need manager module  
    import MongoUtil  
    import FileUtil  
    import conf_dev  
    import conf_test  
    import scratch_airport_name  
    import scratch_flight_number  
    import scratch_movie_name  
    import scratch_train_number  
    import scratch_train_station  
    import MainUtil
    

    下面两个是配置文件,第一个是开发环境的(windows),第二个是测试环境的(linux),然后再根据不同系统启用不同的配置文件

    conf_dev.py

    # -*- coding: UTF-8 -*-  
    # the configuration file of develop environment  
    
    # path configure  
    data_root_path = 'E:/APK98_GNBJ_SMARTSERVER/Proj-gionee-data/smart/data'  
    
    # mongodb configure  
    user = "cmc"  
    pwd = "123456"  
    server = "localhost"  
    port = "27017"  
    db_name = "smartdb"
    

    conf_test.py

    # -*- coding: UTF-8 -*-  
    # the configuration file of test environment  
    
    #path configure  
    data_root_path = '/data/app/smart/data'  
    
    #mongodb configure  
    user = "smart"  
    pwd = "123456"  
    server = "10.8.0.30"  
    port = "27017"  
    db_name = "smartdb"
    

    下面文件是一个util文件,主要是读取原文件的内容,还有将新内容写入原文件。

    FileUtil.py

    # -*- coding: UTF-8 -*-  
    import conf_dev  
    import conf_test  
    import platform  
    
    
    # configure Multi-confronment  
    # 判断当前系统,并引入相对的配置文件
    platform_os = platform.system()  
    config = conf_dev  
    if (platform_os == 'Linux'):  
        config = conf_test  
    # path  
    data_root_path = config.data_root_path  
    
    
    # load old data  
    def read(resources_file_path, encode='utf-8'):  
        file_path = data_root_path + resources_file_path  
        outputs = []  
        for line in open(file_path, encoding=encode):  
            if not line.startswith("//"):  
                outputs.append(line.strip('\n').split(',')[-1])  
        return outputs  
    
    
    # append new data to file from scratch  
    def append(resources_file_path, data, encode='utf-8'):  
        file_path = data_root_path + resources_file_path  
        with open(file_path, 'a', encoding=encode) as f:  
            f.write(data)  
        f.close
    

    下面这个main方法控制着执行流程,其他的执行方法调用这个main方法

    MainUtil.py

    # -*- coding: UTF-8 -*-  
    
    import sys  
    from datetime import datetime  
    import MongoUtil  
    import FileUtil  
    
    # @param resources_file_path 资源文件的path  
    # @param base_url 爬取的连接  
    # @param scratch_func 爬取的方法  
    def main(resources_file_path, base_url, scratch_func):  
        old_data = FileUtil.read(resources_file_path)   #读取原资源  
        new_data = scratch_func(base_url, old_data)     #爬取新资源  
        if new_data:        #如果新数据不为空  
            date_new_data = "//" + datetime.now().strftime('%Y-%m-%d') + "\n" + "\n".join(new_data) + "\n"      #在新数据前面加上当前日期  
            FileUtil.append(resources_file_path, date_new_data)     #将新数据追加到文件中  
            MongoUtil.insert(resources_file_path, date_new_data)    #将新数据插入到mongodb数据库中  
        else:   #如果新数据为空,则打印日志  
            print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'), '----', getattr(scratch_func, '__name__'), ": nothing to update ")
    

    将更新的内容插入mongodb中

    MongoUtil.py

    # -*- coding: UTF-8 -*-  
    
    import platform  
    from pymongo import MongoClient  
    from datetime import datetime, timedelta, timezone  
    import conf_dev  
    import conf_test  
    
    # configure Multi-confronment  
    platform_os = platform.system()  
    config = conf_dev  
    if (platform_os == 'Linux'):  
        config = conf_test  
    # mongodb  
    uri = 'mongodb://' + config.user + ':' + config.pwd + '@' + config.server + ':' + config.port + '/' + config.db_name  
    
    
    # 将数据写入mongodb  
    # @author chenmc  
    # @param uri connect to mongodb  
    # @path save mongodb field  
    # @data save mongodb field  
    # @operation save mongodb field default value 'append'  
    # @date 2017/12/07 16:30  
    # 先在mongodb中插入一条自增数据 db.sequence.insert({ "_id" : "version","seq" : 1})  
    
    def insert(path, data, operation='append'):  
        client = MongoClient(uri)  
        resources = client.smartdb.resources  
        sequence = client.smartdb.sequence  
        seq = sequence.find_one({"_id": "version"})["seq"]      #获取自增id  
        sequence.update_one({"_id": "version"}, {"$inc": {"seq": 1}})       #自增id+1  
        post_data = {"_class": "com.gionee.smart.domain.entity.Resources", "version": seq, "path": path,  
                     "content": data, "status": "enable", "operation": operation,  
                     "createtime": datetime.now(timezone(timedelta(hours=8)))}  
        resources.insert(post_data)     #插入数据
    

    项目引入的第三方库,可使用pip install -r requirements.txt下载第三方库

    requirements.txt

    # need to install module# need to install module  
    bs4  
    pymongo  
    requests  
    json
    

    下面真正的执行方法来了,这五个py分别表示爬取五种信息:机场名、航班号、电影名、列车号、列车站。他们的结构都差不多,如下:

    第一部分:定义查找的url;
    第二部分:获取并与旧数据比较,返回新数据;
    第三部分:main方法,执行写入新数据到文件和mongodb中;
    

    scratch_airport_name.py:爬取全国机场

    # -*- coding: UTF-8 -*-  
    import requests  
    import bs4  
    import json  
    import MainUtil  
    
    resources_file_path = '/resources/airplane/airportNameList.ini'  
    scratch_url_old = 'https://data.variflight.com/profiles/profilesapi/search'  
    scratch_url = 'https://data.variflight.com/analytics/codeapi/initialList'  
    get_city_url = 'https://data.variflight.com/profiles/Airports/%s'  
    
    
    #传入查找网页的url和旧数据,然后本方法会比对原数据中是否有新的条目,如果有则不加入,如果没有则重新加入,最后返回新数据
    def scratch_airport_name(scratch_url, old_airports):  
        new_airports = []  
        data = requests.get(scratch_url).text  
        all_airport_json = json.loads(data)['data']  
        for airport_by_word in all_airport_json.values():  
            for airport in airport_by_word:  
                if airport['fn'] not in old_airports:  
                    get_city_uri = get_city_url % airport['id']  
                    data2 = requests.get(get_city_uri).text  
                    soup = bs4.BeautifulSoup(data2, "html.parser")  
                    city = soup.find('span', text="城市").next_sibling.text  
                    new_airports.append(city + ',' + airport['fn'])  
        return new_airports  
    
     #main方法,执行这个py,默认调用main方法,相当于java的main
    if __name__ == '__main__':  
        MainUtil.main(resources_file_path, scratch_url, scratch_airport_name)
    

    scratch_flight_number.py:爬取全国航班号

    #!/usr/bin/python  
    # -*- coding: UTF-8 -*-  
    
    import requests  
    import bs4  
    import MainUtil  
    
    resources_file_path = '/resources/airplane/flightNameList.ini'  
    scratch_url = 'http://www.variflight.com/sitemap.html?AE71649A58c77='  
    
    
    def scratch_flight_number(scratch_url, old_flights):  
        new_flights = []  
        data = requests.get(scratch_url).text  
        soup = bs4.BeautifulSoup(data, "html.parser")  
        a_flights = soup.find('div', class_='list').find_all('a', recursive=False)  
        for flight in a_flights:  
            if flight.text not in old_flights and flight.text != '国内航段列表':  
                new_flights.append(flight.text)  
        return new_flights  
    
    
    if __name__ == '__main__':  
        MainUtil.main(resources_file_path, scratch_url, scratch_flight_number)
    

    scratch_movie_name.py:爬取最近上映的电影

    #!/usr/bin/python  
    # -*- coding: UTF-8 -*-  
    import re  
    import requests  
    import bs4  
    import json  
    import MainUtil  
    
    # 相对路径,也是需要将此路径存入数据库  
    resources_file_path = '/resources/movie/cinemaNameList.ini'  
    scratch_url = 'http://theater.mtime.com/China_Beijing/'  
    
    
    # scratch data with define url  
    def scratch_latest_movies(scratch_url, old_movies):  
        data = requests.get(scratch_url).text  
        soup = bs4.BeautifulSoup(data, "html.parser")  
        new_movies = []  
        new_movies_json = json.loads(  
            soup.find('script', text=re.compile("var hotplaySvList")).text.split("=")[1].replace(";", ""))  
        coming_movies_data = soup.find_all('li', class_='i_wantmovie')  
        # 上映的电影  
        for movie in new_movies_json:  
            move_name = movie['Title']  
            if move_name not in old_movies:  
                new_movies.append(movie['Title'])  
        # 即将上映的电影  
        for coming_movie in coming_movies_data:  
            coming_movie_name = coming_movie.h3.a.text  
            if coming_movie_name not in old_movies and coming_movie_name not in new_movies:  
                new_movies.append(coming_movie_name)  
        return new_movies  
    
    
    if __name__ == '__main__':  
        MainUtil.main(resources_file_path, scratch_url, scratch_latest_movies)
    

    scratch_train_number.py:爬取全国列车号

    #!/usr/bin/python  
    # -*- coding: UTF-8 -*-  
    import requests  
    import bs4  
    import json  
    import MainUtil  
    
    resources_file_path = '/resources/train/trainNameList.ini'  
    scratch_url = 'http://www.59178.com/checi/'  
    
    
    def scratch_train_number(scratch_url, old_trains):  
        new_trains = []  
        resp = requests.get(scratch_url)  
        data = resp.text.encode(resp.encoding).decode('gb2312')  
        soup = bs4.BeautifulSoup(data, "html.parser")  
        a_trains = soup.find('table').find_all('a')  
        for train in a_trains:  
            if train.text not in old_trains and train.text:  
                new_trains.append(train.text)  
        return new_trains  
    
    
    if __name__ == '__main__':  
        MainUtil.main(resources_file_path, scratch_url, scratch_train_number)
    

    scratch_train_station.py:爬取全国列车站

    #!/usr/bin/python  
    # -*- coding: UTF-8 -*-  
    import requests  
    import bs4  
    import random  
    import MainUtil  
    
    resources_file_path = '/resources/train/trainStationNameList.ini'  
    scratch_url = 'http://www.smskb.com/train/'  
    
    
    def scratch_train_station(scratch_url, old_stations):  
        new_stations = []  
        provinces_eng = (  
            "Anhui", "Beijing", "Chongqing", "Fujian", "Gansu", "Guangdong", "Guangxi", "Guizhou", "Hainan", "Hebei",  
            "Heilongjiang", "Henan", "Hubei", "Hunan", "Jiangsu", "Jiangxi", "Jilin", "Liaoning", "Ningxia", "Qinghai",  
            "Shandong", "Shanghai", "Shanxi", "Shanxisheng", "Sichuan", "Tianjin", "Neimenggu", "Xianggang", "Xinjiang",  
            "Xizang",  
            "Yunnan", "Zhejiang")  
        provinces_chi = (  
            "安徽", "北京", "重庆", "福建", "甘肃", "广东", "广西", "贵州", "海南", "河北",  
            "黑龙江", "河南", "湖北", "湖南", "江苏", "江西", "吉林", "辽宁", "宁夏", "青海",  
            "山东", "上海", "陕西", "山西", "四川", "天津", "内蒙古", "香港", "新疆", "西藏",  
            "云南", "浙江")  
        for i in range(0, provinces_eng.__len__(), 1):  
            cur_url = scratch_url + provinces_eng[i] + ".htm"  
            resp = requests.get(cur_url)  
            data = resp.text.encode(resp.encoding).decode('gbk')  
            soup = bs4.BeautifulSoup(data, "html.parser")  
            a_stations = soup.find('left').find('table').find_all('a')  
            for station in a_stations:  
                if station.text not in old_stations:  
                    new_stations.append(provinces_chi[i] + ',' + station.text)  
        return new_stations  
    
    
    if __name__ == '__main__':  
        MainUtil.main(resources_file_path, scratch_url, scratch_train_station)
    

    将项目放到测试服务器(centos7系统)中运行起来,我写了一个crontab,定时调用他们,下面贴出crontab。

    /etc/crontab

    SHELL=/bin/bash  
    PATH=/sbin:/bin:/usr/sbin:/usr/bin  
    MAILTO=root  
    
    # For details see man 4 crontabs  
    
    # Example of job definition:  
    # .---------------- minute (0 - 59)  
    # |  .------------- hour (0 - 23)  
    # |  |  .---------- day of month (1 - 31)  
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...  
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat  
    # |  |  |  |  |  
    # *  *  *  *  * user-name  command to be executed  
      0  0  *  *  * root python3 /data/app/smart/py/scratch_movie_name.py    >> /data/logs/smartpy/out.log 2>&1  
      0  1  *  *  1 root python3 /data/app/smart/py/scratch_train_station.py >> /data/logs/smartpy/out.log 2>&1  
      0  2  *  *  2 root python3 /data/app/smart/py/scratch_train_number.py  >> /data/logs/smartpy/out.log 2>&1  
      0  3  *  *  4 root python3 /data/app/smart/py/scratch_flight_number.py >> /data/logs/smartpy/out.log 2>&1  
      0  4  *  *  5 root python3 /data/app/smart/py/scratch_airport_name.py  >> /data/logs/smartpy/out.log 2>&1
    

    后续

    目前项目已经正常运行了三个多月啦。。。

    有问题反馈

    在阅读与学习中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流

    • 微信公众号:裸睡的猪
    • 在下面留言
    • 直接给我私信

    关于此公众号

    • 后期或提供各种软件的免费激活码
    • 推送python,java等编程技术文章和面试技巧
    • 当然你们可以将你们感兴趣的东西直接送给我
    • 谢谢你们真诚的关注,此公众号以后获得的收益将全部通过抽奖的形式送给大家
    • 以后如果博主要创业的话,也会在此公众号中挑选小伙伴哦~
    • 希望大家分享出去,让更多想学习python的朋友看到~

     

     

    展开全文
  • Python 爬虫APP URL

    千次阅读 2017-12-25 16:36:50
    1、安装环境 python 2.7  2、安装scrapy  Pip2.7 install scrapy; 如果不是这么安装,则windows下scrapy命令用不了;先pip2.7 uninstall scrapy再install; 3、输入scrapy 有命令提示则安装正确;4、Windows 下...

    1、安装环境  python 2.7  

    2、安装scrapy

     Pip2.7 install scrapy;   如果不是这么安装,则windows下scrapy命令用不了;先pip2.7 uninstall scrapy再install;

    3、输入scrapy 有命令提示则安装正确;
    4、Windows 下进入爬虫项目里,cd D:\PythonWorkspace\spider; 执行命令:scrapy  startproject  tutorial;
    5、执行以后会出现很多脚本

     

    tutorial/
        scrapy.cfg            # deploy configuration file
    
        tutorial/             # project's Python module, you'll import your code from here
            __init__.py
    
            items.py          # project items definition file
    
            pipelines.py      # project pipelines file
    
            settings.py       # project settings file
    
            spiders/          # a directory where you'll later put your spiders
                __init__.py

     

     

     

    6、编写爬虫脚本

     

     

    # -*- coding:utf-8 -*-
    import sys
    import scrapy
    
    reload(sys)
    sys.setdefaultencoding('utf-8')
    class WanDouJia_browser_Spider(scrapy.Spider):
        name ="Spider-appLabel_URL"
    
        def start_requests(self):
            #app应用大类入口
            #url="http://www.wandoujia.com/category/app"
    
            for line in open("D:\\PythonWorkspace\\spider\\Resources\\appLabels.csv".decode('utf-8'),'r'):
                keyWord= line.split(",")[0].strip()
                url = "http://www.wandoujia.com/search?key="+keyWord.decode('utf-8')
                yield scrapy.Request(url=url,meta={'appname':keyWord.decode('utf-8')},callback=self.parse_big_class)
    
        #解析出app的入口url
        def parse_big_class(self,response):
            appName = response.xpath('//h2[@class="app-title-h2"]/a/text()').extract_first()
            url = response.xpath('//h2[@class="app-title-h2"]/a/@href').extract_first()
            print  appName+" "+url
    
            f=open("appListURLs.csv", 'a')
            f.write(str(appName)+","+str(url)+"\n")

     

    7、设置调试设置。

     

    打开pycharm工程调试配置界面(Run -> Edit Configurations)。

     

    1. 选择工程。选择调试工程 Spider
    2. 设置执行脚本(Script)。设置为 D:\Python27\Lib\site-packages\scrapy\cmdline.py, cmdline.py 是 scrapy提供的命令行调用脚本,此处将启动脚本设置为 cmdline.py,将需要调试的工程作为参数传递给此脚本。
    3. 设置执行脚本参数(Script parameters)。设置为 crawl Spider-appLabel_URL,参数命令参照官方文档提供的爬虫执行命;
    4. 设置工作目录(Work Directory)。设置为工程根目录 D:\PythonWorkspace\spider\tutorial,根目录下包含爬虫配置文件 scrapy.cfg

     

    配置如下图:

    配置完成后,可设置断点,调试运行配置好的工程,断点命中,并在控制台输出调试信息。 

    8、调试会报错,ImportError: No module named win32api

    安装win32api:pip install win32api;

    9、有可能报错 Unknown command: crawl

    设置工作目录有误,造成无法识别 scrapy 命令,按照上文所说,将工作目录设置为包含 scrapy.cfg,重新运行,OK。

     

     


     

    展开全文
  • Python爬虫如何获取重定向后的url

    万次阅读 2019-03-18 19:11:10
    Python爬虫中会遇到url被重定向的情况,比如我点击https://www.test.com/uiehwuhuhgrehgureg.htm跳转到另一个页面,另一个页面的url会变成https://www.test.com/test.htm 使用下面代码可以获取到重定向后的url ...

    在Python爬虫中会遇到url被重定向的情况,比如我点击  https://www.test.com/uiehwuhuhgrehgureg.htm  跳转到另一个页面,另一个页面的url会变成  https://www.test.com/test.htm

    使用下面代码可以获取到重定向后的url

    import requests
    
    
    def get_redirect_url():
        # 重定向前的链接
        url = "重定向前的url"
        # 请求头,这里我设置了浏览器代理
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
        # 请求网页
        response = requests.get(url, headers=headers)
        print(response.status_code)  # 打印响应的状态码
        print(response.url)  # 打印重定向后的网址
        # 返回重定向后的网址
        return response.url
    
    
    if __name__ == '__main__':
        redirect_url = get_redirect_url()

     

    展开全文
  • python爬虫获取跳转后的响应url

    万次阅读 2018-11-24 11:49:42
    ** 在爬虫中经常会遇到网页给的某个url是跳转前的url,这类请求url一般很长,假如数据库建表时字段限制,则会无法入库,从而导致拿不到数据,看了下网上其他教程,较为繁琐.我在这提供一种思路及代码片段供大家参考. ...

    ** 在爬虫中经常会遇到网页给的某个url是跳转前的url,这类请求url一般很长,假如数据库建表时字段限制,则会无法入库,从而导致拿不到数据,看了下网上其他教程,较为繁琐.我在这提供一种思路及代码片段供大家参考.
    浏览器向请求url发送请求,如获取到正常的响应,则一般相应状态码时300~305,随后会重定向到另一url(响应url),想到这一点其实就很好解决了.
    可打印出相应头内容,在对应json中找到响应url,因为响应内容比较少,可以直接将url提出.我以一淘宝中分离天猫商品的url为例.
    **

    import requests
    def get_redirect_url():
    	url = """https://mclick.simba.taobao.com/cc_im?p=INC.redible&s=936271675&k=705&e=cf5Imw38zyT5LeEXLaoxX6gUJlv1pJiLeYS7ah10x8Plp95OWMW%2BVsso8ajx2qSZMHlKHH3GzaQJHiACcFM5PxMDWFwAo9PcY8S1Kuu7YOyaGIYBEZ9QdoMkKz82auCyNZ8bbUQVevFDzlFKxKHX%2Bp%2B%2FHAxpbvW62yiplFhHxAH%2BawzgNyHhNToiFWC%2FBivB3jGPPFqsRTmgWZf7Jshf%2F3NiXmDmL2WTZIU5wKgaeMLtxOLeyKFscBa2Gk%2FOQhS8QXtTBDucRxBcs%2BVbDLrgv3sZMGT3feX36D97LAShJd9MD5XRvHMkUiZ1X4oJf5e8A6wPbXazQ2BhHsqQJmOwW9ar422dxWmq6T1gXauzR9E6oGhtUAciYbZaIvTFPP5WiT5P4ZqSyXv%2FAAyqVXSIM8XLmjd2EBjqrva4CfegCkInOOBujZnCbYEbowsFHgfR4klATU%2BeMdP8aDAcIpvzCSUcQNNzEWczs6wXvWHBKPJKcRl8kP87KeIj1Nss8uZy6C8bX1UJGOX%2FKSRGD7W4PJ8izCG1Zvrbv1PWRmQ4wv%2B2uMM0StYEtjos6rPV5rBcSkwsiLYYrk1N%2BVEWn%2Fpm2D4q1HyKX658ob7TuonqLw7YJdkISO06Ojpj%2BnSXK0fDqKFI84lIBbCoaWX72cFm8FZSwYoxbzwwrE%2FS4mjROCmofgQh%2BXArHCoRdQ2u3FB%2B"""
    
    	headers = {
    	'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'
    }
    
           response = requests.get(url,headers=headers)
    
           #print(response.headers)
           return response.headers['Url-Hash']
    
    get_redirect_url()      
    

    即可获取到跳转后的url

    展开全文
  • Python爬虫的最基本的信息是什么呢,当然是URL了,我们需要的所有信息都要通过URL获取,那你了解URL吗 今天就以百度图片的URL来学习一些关于URL的信息 百度图片杨幂,获取URL: ...ct=201326592&lm=-1&...
  • python爬虫 - 翻页url不变网页的爬虫探究

    千次阅读 多人点赞 2020-08-04 20:21:47
    python爬虫-翻页url不变网页的爬虫探究 url随着翻页改变的爬虫已经有非常多教程啦,这里主要记录一下我对翻页url不变网页的探究过程。 学术菜鸡第一次写CSDN,请大家多多包容~ 如果对你有一点点帮助,请帮我点个赞...
  • 最近在写一个网络爬虫的代码,提供命令行来下载文件或者是打印根域名下指定节点及深度的子节点。用的是urllib2库,算是比较简单,但是功能并没有很强大。 说重点吧,在实际爬网页的过程中,一般的过程是一次调用下面...
  • python爬虫-翻页url不变网页的爬虫探究 url随着翻页改变的爬虫已经有非常多教程啦,这里主要记录一下我对翻页url不变网页的探究过程。学术菜鸡第一次写CSDN,请大家多多包容~ 如果对你有一点点帮助,请帮我点个赞...
  • Python爬虫获取基金持仓股票数据

    千次阅读 2021-02-11 14:05:47
    通过Python爬虫获取基金持仓股票数据,按照基金持仓金额对股票进行排行,并储存在本地数据库。 from urllib import request from bs4 import BeautifulSoup import re import pymysql fundSharesList = [] db =...
  • Python 爬虫获取某个网页所有的a标签中的超链接网址
  • Python爬虫获取网页编码格式

    千次阅读 2019-09-18 15:35:15
    Python爬虫获取网页编码格式 网页编码格式是每个网页规定的本页面文字的编码方式,其中比较流行的是ascii, gbk, utf-8, iso等。观察许多网页的编码格式都是在meta标签的content属性中定义的。基于以上特点本文提供...
  • 这个是用抖音做测试的,使用response的url属性,就可以获取重定向的地址 import requests url='https://v.douyin.com/J2EarSN/' resp=requests.get(url).url print(resp)
  • python爬虫

    万次阅读 2018-02-07 00:59:16
    #通用网络爬虫(没有目的,爬去所有的URL) 聚焦网络爬虫(过滤无关的链接)#python数据分析与挖掘实战的正则表达式 #正则表达式 世界上信息非常多,而我们关注的信息有限。假如我们希望只提取出关注数据,此时可以...
  • python爬虫获取豆瓣图书Top250

    千次阅读 多人点赞 2019-11-04 09:26:44
    在上一篇博客《python爬虫获取豆瓣电影TOP250》中,小菌为大家带来了如何将豆瓣电影Top250的数据存入MySQL数据库的方法。这次的分享,小菌决定再带着大家去研究如何爬取豆瓣图片的Top250信息,并将数据保存在csv文件中...
  • python爬虫入门教程(二):开始一个简单的爬虫

    万次阅读 多人点赞 2017-09-12 15:02:21
    python爬虫入门教程,介绍编写一个简单爬虫的过程。
  • python爬虫获取图片

    千次阅读 2019-09-11 20:44:38
    import urllib.request import re 隐藏自己的包头信息 ... request = urllib.request.Request(url) #添加地址 request.add_header("user-agent","Mozilla/4.0 (Windows NT 6.5.0;\ Win32; x86; rv:69...
  • # 获得重定向url from urllib import request # https://zhidao.baidu.com/question/681501874175782812.html url = ...
  • python 爬虫 获取动漫截图

    千次阅读 2020-05-17 15:09:16
    之前有些无聊(呆在家里实在玩的腻了),然后就去B站看了一些python爬虫视频,没有进行基础的理论学习,也就是直接开始实战,感觉跟背公式一样的进行爬虫,也算行吧,至少还能爬一些东西,hhh。我今天来分享一个我的...
  • python 爬虫获取网页 html 内容以及下载附件的方法 python 爬虫获取网页 html 内容的两种方法: 获取静态网页和使用浏览器获取动态内容。 from urllib.request import urlopen from urllib import request from bs4 ...
  • 原计划继续写一下关于手机APP的爬虫,结果发现夜神模拟器总是卡死,比较懒,不想找原因了,哈哈,所以接着写后面的博客了,从50篇开始要写几篇python爬虫的骚操作,也就是用Python3通过爬虫实现一些小工具。...
  • 我的第一个Python爬虫——谈心得

    万次阅读 多人点赞 2018-03-30 19:24:26
    相信各大高校应该都有本校APP或超级课程表之类的软件,在信息化的时代能快速收集/查询自己想要的咨询也是种很重要的能力,所以记下了这篇博客,用于总结我所学到的东西,以及用于记录我的第一个爬虫的初生。...
  • python爬虫获取菜鸟网站上url

    千次阅读 2019-06-08 10:26:53
    致敬菜鸟网站. 在上面自学了python, html, javascript等 import requests from bs4 import BeautifulSoup def main(): base_url = ... url = "http://www.runoob.com/python3/python3-string.htm...
  • 一个小爬虫,爬取微信读书 书籍信息,简单揭示Python爬虫真谛
  • 接上一篇文章:Python爬虫:编写...本篇文章:继续介绍另外两种方式来实现python爬虫获取数据,并将python获取的数据保存到文件中。 一、第一种方式: 主要通过爬取百度官网页面数据,将数据保存到文件baidu.html中
  • python爬虫获取腾讯新闻正文标题内容 [文件] downloadhtm2txt.py ~ 3KB #coding=utf-8 import urllib2 import re import os #this function from internet @littlebai #去掉特征字符串内的html操作符 def ...
  • Python爬虫(二):爬虫获取数据保存到文件

    万次阅读 多人点赞 2018-10-18 17:33:42
    接上一篇文章:Python爬虫(一):编写简单爬虫之新手入门 前言: 上一篇文章,我爬取到了豆瓣官网的页面代码,我...废话不多说,进入正文。 本篇文章:继续介绍另外两种方式来实现python爬虫获取数据,并将pytho...
  • python 爬虫之selenium可视化爬虫

    万次阅读 多人点赞 2020-08-05 19:52:11
    一文带你了解Python爬虫(一)——基本原理介绍 一文带你了解Python爬虫(二)——四种常见基础爬虫方法介绍 之所以把selenium爬虫称之为可视化爬虫 主要是相较于前面所提到的几种网页解析的爬虫方式 selenium爬虫...
  • Python 爬虫系列教程一爬取批量百度图片

    万次阅读 多人点赞 2018-07-29 19:40:05
    很久之前就学习了Python的爬虫了,也用来做过一些项目(主要是一些课程项目),但时间比较紧,一直没有空把它写下来,这个暑假,我可能会逐渐更新Python爬虫的相关知识。 项目1:实现批量爬取百度图片 先简单的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 79,086
精华内容 31,634
关键字:

python爬虫获取url

python 订阅
爬虫 订阅