精华内容
下载资源
问答
  • ''' 爬取指定关键字图片 ''' import re# 正则表达式,解析网页 import requests# ...word, lastNum,)#本条语句执行一次获取60张图 文件层次: 参考:爬虫:根据关键词爬取图片 Python爬虫实战教程:批量爬取某网站图片
    '''
    爬取指定关键字图片
    '''
    import re# 正则表达式,解析网页
    import requests# 请求网页
    import traceback
    import os
     
        
    def dowmloadPic(html,keyword,startNum):
        headers = {'user-agent':'Mozilla/5.0'}# 浏览器伪装,因为有的网站会反爬虫,通过该headers可以伪装成浏览器访问,否则user-agent中的代理信息为python
        pic_url = re.findall('"objURL":"(.*?)",',html,re.S)# 找到符合正则规则的目标网站
        num = len(pic_url)
        i = startNum
        subroot = root + '/' + word
        txtpath = subroot + '/download_detail.txt'
    
        print('找到关键词:'+keyword+'的图片,现在开始下载图片...')
        
        for each in pic_url:
            a = '第'+str(i+1)+'张图片,图片地址:'+str(each) + '\n'
            b = '正在下载' + a
            print(b)
            path = subroot + '/' + str(i+1)
            try:
                if not os.path.exists(subroot):
                    os.mkdir(subroot)
                if not os.path.exists(path):
                    pic = requests.get(each,headers = headers,timeout = 10)
                    with open(path+'.jpg','wb') as f:
                        f.write(pic.content)
                        f.close()
                    with open(txtpath,'a') as f:
                        f.write(a)
                        f.close()
                        
            except:
                traceback.print_exc()
                print ('【错误】当前图片无法下载')
                continue
            i += 1
     
        return i
     
     
    if __name__ == '__main__':
        
        headers = {'user-agent':'Mozilla/5.0'}
        words = ['桃子','苹果','梨']
        #words为一个列表,可以自动保存多个关键字的图片
        root = './download_images_of_'
        for word in words:
            root = root + word + '&'
        if not os.path.exists(root):
            os.mkdir(root)
        for word in words:
            lastNum = 0
            # word = input("Input key word: ")
            if word.strip() == "exit":
                break
            pageId = 0
            #此处的参数为需爬取的页数,设置为2页
            for i in range(3):
                url = 'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=' + word + "&pn="+str(pageId)+"&gsm=?&ct=&ic=0&lm=-1&width=0&height=0"
                pageId += 20#好像没啥影响
                html = requests.get(url,headers = headers)
                # print(html.text) #打印网页源码,相当于在网页中右键查看源码内容
                lastNum = dowmloadPic(html.text, word, lastNum,)#本条语句执行一次获取60张图
    
    

    文件层次:
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    参考:爬虫:根据关键词爬取图片
    Python爬虫实战教程:批量爬取某网站图片

    展开全文
  • 我们在新浪微博的抓取中,已经实现了ajax抓取的操作,详情请戳链接:https://blog.csdn.net/qq_29027865/article/details/83239316 但是对于一些ajax获取的数据,有些接口比较...搜索关键字 (1)首先引入seleni...

    我们在新浪微博的抓取中,已经实现了ajax抓取的操作,详情请戳链接:https://blog.csdn.net/qq_29027865/article/details/83239316

    但是对于一些ajax获取的数据,有些接口比较复杂,包含动态的参数等,如果没有办法及时分析出参数的规律,那么此时使用Selenium来抓取也是一个不错的选择。

    一.搜索关键字

    (1)首先引入selenium的库:

    from selenium import webdriver

    (2)使用webdriver生成一个浏览器驱动:

    browser = webdriver.Chrome()
    #browser = webdriver.PhantomJS()

    注:需要提前将driver.exe添加到环境变量,下载路径请戳:

    https://download.csdn.net/download/qq_29027865/10328885

    https://download.csdn.net/download/qq_29027865/10328884

     (3)请求淘宝首页:

    browser.get('https://www.taobao.com')

    (4)因为加载页面需要时间,为了防止加载时间过长而出现报错,在这里加上一个判断加载是否成功的操作:

    通过selenium官方文档找到waits方法,详情戳:https://selenium-python.readthedocs.io/

     

    通过定位右键copy selector,可以得到输入框的css选择器的内容,同样方法获取到按钮的css选择器的内容,如下:

    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    #定位等待使用presence_of_element_located
    #定位点击使用element_to_be_clickable
    #容易出现超时错误,加上超时异常来作为判断
    
    def search():
        try:
            browser.get('https://www.taobao.com')
            # 判断是否加载成功
            input = wait.until(
                EC.presence_of_element_located((By.CSS_SELECTOR, "#q"))
            )
            submit = WebDriverWait(browser,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,'#J_TSearchForm > div.search-button > button')))
            input.send_keys('手机')
            submit.click()
        except TimeoutException:
            return search()

    二.分析页码及翻页:

    通过分析淘宝商品的页面,

    如果是通过直接点击下一页来遍历每页,会存在一个问题:

    遍历到最后一页时,程序会因找不到下一页这个selector而选择异常退出,这是最好的情况。但是如果在爬取过程中出现了异常退出,这时也没有记录当前的页数,就无法继续爬取后续对应的页面了。还需要在点击下一页获取中做异常检测,整个流程相对复杂,因此这里我们呢采取第二种方法来获取页面。

    实现如下:

    def next_page(page_number):
        try:
            input = wait.until(
                EC.presence_of_element_located((By.CSS_SELECTOR, "#mainsrp-pager > div > div > div > div.form > input"))
            )
            submit = WebDriverWait(browser, 10).until(
                EC.element_to_be_clickable((By.CSS_SELECTOR, '#mainsrp-pager > div > div > div > div.form > span.btn.J_Submit')))
            input.clear()
            input.send_keys(page_number)
            submit.click()
        #     判断是否为当前页
            wait.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR,'#mainsrp-pager > div > div > div > ul > li.item.active > span'),str(page_number)))
            get_products()
        except TimeoutException:
            next_page(page_number)

    三.分析提取商品的内容

    根据商品信息的源码,我们可以看出:每个商品都是一个item,它们在id为'mainsrp-itemlist'下的items的列表中:

    1.首先判定这个items是否加载成功:

    wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#mainsrp-itemlist .items .item')))
        

    2.通过pagesorce拿到网页源代码,并使用pyQyery来解析css;

    3.获取商品值:attr获取属性值text()获取文本值,对于一些文本值,使用列表形式进行切割,[:-3]指从前面到倒数第三个:

    def get_products():
        wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#mainsrp-itemlist .items .item')))
        # 通过page_source方法获取源代码
        html = browser.page_source
        # 初始化pyquery对象
        doc = pq(html)
        # 通过调用items的方法来得到一个生成器,遍历生成器,来逐个得到li节点的对象
        items = doc('#mainsrp-itemlist .items .item').items()
        for item in items:
            product = {
                'image': item.find('.pic .img').attr('src'),
                'price': item.find('.price').text(),
                'deal':item.find('.deal-cnt').text()[:-3],
                'title':item.find('.title').text(),
                'shop':item.find('.shop').text(),
                'location':item.find('.location').text()
            }
            print(product)

    完整代码如下:

    from selenium import webdriver
    from selenium.common.exceptions import TimeoutException
    
    from pyquery import  PyQuery as pq
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    import re
    browser = webdriver.Chrome()
    
    browser.set_window_size(1400,900)
    
    wait = WebDriverWait(browser,10)
    
    # 翻页的两种方法:1.下一页;2.输入到某页后点击确定
    # 判断高亮的数字
    
    def search():
        print("正在搜索...")
        try:
            browser.get('https://www.taobao.com')
            # 判断是否加载成功
            input = wait.until(
                EC.presence_of_element_located((By.CSS_SELECTOR, "#q"))
            )
            submit = WebDriverWait(browser,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,'#J_TSearchForm > div.search-button > button')))
            input.send_keys('手机')
            submit.click()
            total = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#mainsrp-pager > div > div > div > div.total')))
            return total.text
        except TimeoutException:
            return search()
    
    # 自动翻页
    def next_page(page_number):
        print('正在翻页...',page_number)
        try:
            input = wait.until(
                EC.presence_of_element_located((By.CSS_SELECTOR, "#mainsrp-pager > div > div > div > div.form > input"))
            )
            submit = WebDriverWait(browser, 10).until(
                EC.element_to_be_clickable((By.CSS_SELECTOR, '#mainsrp-pager > div > div > div > div.form > span.btn.J_Submit')))
            input.clear()
            input.send_keys(page_number)
            submit.click()
        #     判断是否为当前页
            wait.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR,'#mainsrp-pager > div > div > div > ul > li.item.active > span'),str(page_number)))
            get_products()
        except TimeoutException:
            next_page(page_number)
    
    # 解析方法
    def get_products():
        wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#mainsrp-itemlist .items .item')))
        # 通过page_source方法获取源代码
        html = browser.page_source
        # 初始化pyquery对象
        doc = pq(html)
        items = doc('#mainsrp-itemlist .items .item').items()
        for item in items:
            product = {
                'image': item.find('.pic .img').attr('src'),
                'price': item.find('.price').text().strip()[2:],
                'deal':item.find('.deal-cnt').text()[:-3],
                'title':item.find('.title').text(),
                'shop':item.find('.shop').text(),
                'location':item.find('.location').text()
            }
            print(product)
    
    
    def main():
        try:
            total = search()
            # 提取出100的数字
            total = int(re.compile('(\d+)').search(total).group(1))
            for i in range(2,total+1):
                next_page(i)
        except Exception:
            print("出错啦~")
        finally:
            browser.close()
    
    if __name__ == '__main__':
        main()
    
    #     再加一个等待操作,这里实现得是分页得逻辑
    #     total = wait.until(EC.presence_of_element_located(By.CSS_SELECTOR,'#mainsrp-pager > div > div > div > div.total'))
        # 返回内容
    

     

    展开全文
  • python3爬虫 根据关键字搜索爬取并下载百度上的图片
  • python爬取百度图片

    2018-05-04 15:04:29
    python爬取百度图片 使用任意关键字 python爬取百度图片 使用任意关键字 python爬取百度图片 使用任意关键字 python爬取百度图片 使用任意关键字 python爬取百度图片 使用任意关键字 python爬取百度图片
  • python 爬取知乎某一关键字数据

    万次阅读 热门讨论 2018-03-03 16:15:02
    python 爬取知乎某一关键字数据 前言 和之前爬取Instagram数据一样,那位同学还需要爬取知乎上面关于该电影的评论。没想到这是个大坑啊。看起来很简单的一个事情就变得很复杂了。 知乎 如果说,有什么事情是最...

    python 爬取知乎某一关键字数据

    前言

    和之前爬取Instagram数据一样,那位同学还需要爬取知乎上面关于该电影的评论。没想到这是个大坑啊。看起来很简单的一个事情就变得很复杂了。

    知乎

    如果说,有什么事情是最坑的,我感觉就是在知乎上面讨论如何抓取知乎的数据了。在2018年的时候,知乎又进行了一次改版啊。真是一个大坑。网上的代码几乎都不能使用了。只有这里!的一篇文章还可以模拟登陆一下。但是这里的代码使用了很多JavaScript代码:
    这里写图片描述
    这里我也是真的很无力啊。真的不怎么会JavaScript,尤其是这种函数名还算是这个款式的。不过这个代码真的可以登录成功,可以得到登陆生成的cookies。

    分析

    首先我们看看我们的知乎搜索一个关键词是什么样子的(这里以电影“通勤营救”为例):
    这里写图片描述
    这时候我们在fidler中看到的数据是这样的:
    这里写图片描述
    访问的网址是:https://www.zhihu.com/search?type=content&q=%E9%80%9A%E5%8B%A4%E8%90%A5%E6%95%91
    但是我们可以看到的是里面返回的数据是空的!!!也就是说,是有其他请求存在的。
    我们再向下找一找,嗯,找到了!
    这里写图片描述
    但是我们看看他是怎么请求的?
    这里写图片描述

    这里我们可以看到在这里和Instagram那个一样!!!
    大概此贴Over了

    另一种思路

    在手机视图下进行

    主要是看到上面的以后突然间对我之前用这个方法做的提不起来兴趣讲解了。算了,直接附上github代码吧.
    里面有一点https://zhuanlan.zhihu.com/p/32898234的代码,虽然没用上,但是也懒得删除了
    github:https://github.com/anonymouslycn/zhihubot

    展开全文
  • python爬取百度使用kw关键字爬取时出现,百度安全验证,解决方法 之前爬取百度用kw时的代码(没有任何问题) import requests url = 'http://www.baidu.com/s' headers = { "User-Agent":"Mozilla/5.0 (Windows...

    python爬取百度使用kw关键字爬取时出现,百度安全验证,解决方法

    • 之前爬取百度用kw时的代码(没有任何问题)
    import requests
    
    url = 'http://www.baidu.com/s'
    
    headers = {
        "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.16 Safari/537.36",
    }
    
    params = {
        'kw':'周冬雨'
    }
    
    resp = requests.get(url,headers=headers,params=params).content.decode()
    print(resp)
    

    但是结果出现了这种情况
    在这里插入图片描述

    • 解决办法(在请求头中添加accept即可)
      在这里插入图片描述
    import requests
    
    url = 'http://www.baidu.com/s'
    
    headers = {
        "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
        "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.16 Safari/537.36",
    }
    
    params = {
        'kw':'周冬雨'
    }
    
    resp = requests.get(url,headers=headers,params=params).content.decode()
    print(resp)
    

    后发现关键词kw有所修改(故将params中的kw修改成wd即可)

    在这里插入图片描述

    展开全文
  • 今天的教程就来说说如何爬取微博的热搜榜。热搜榜的链接是:https://s.weibo.com/top/summary/用浏览器浏览,发现在不登录的情况下也可以正常查看,那就简单多了。使用开发者工具(F12)查看页面逻辑,并拿到每条热搜...
  • #本代码作用:在python3.7环境中,在百度首页输入python,并打印出来当前页面的源代码,并将查询到的python标题存入Excel数据#代码如下:#本代码是在python3.7环境下,使用requests库爬取百度源代码#1、导入相应的...
  • python网路爬虫 --------- 使用百度输入的关键字搜索内容然后爬取搜索内容的url 开发环境:windows7+python3.6.3 开发语言:Python 开发工具:pycharm 第三方软件包:需安装lxml4.0,如果只安装lxml会出错,要...
  • 本文实例为大家分享了Python爬取网络图片的具体代码,供大家参考,具体内容如下代码:import urllibimport urllib.requestimport re#打开网页,下载器def open_html ( url):require=urllib.request.Request(url)...
  • 使用工具:Python2.7 点我下载scrapy框架sublime text3一。搭建python(Windows版本)1.安装python2.7 —然后在cmd当中输入python,界面如下则安装成功2.集成Scrapy框架—-输入...1.爬取无反爬虫措施的静态网站。...
  • import requests import re import os def getHTMLtext(url): headers = {'user-agent':'Mozilla/5.0'} try: r = requests.get(url, timeout=30, headers=headers) r.raise_for_status() ...
  • 导师的一篇论文需要用到包含某一个关键字Github上的代码片段,所以我写了一个爬虫项目将github上面包含某一关键字的代码链接全部爬取出来,并存入csv文件中。 1.开发环境和工具模块 python版本:python 3.6 开发...
  • 通过查询前人的博客,发现必应...调用时只需要一条python语句即可(由于使用了线程池并发请求图片,所以下载速度较快,一分钟300张高清图片没问题): # 关键词:电脑壁纸 # 需要的图片数量:100 # 图片保存路径:'.
  • 运用python爬取彼岸桌面所有关键字高清壁纸 第一次在csdn写博客, 个人技术并不成熟, 还是学生, 高手轻喷菜鸡勿啄 就是心血来潮想要换桌面壁纸, 存在一个文件夹自动更换, 但是从网站上一个一个下载实在太麻烦, 于是想...
  • #encoding=utf-8import urllib2,urllibclass tieba:def tiebaSpider(self,name,starPage,endPage):#要爬取得网络地址url = "https://tieba.baidu.com/f?"#要爬取得带关键字的地址url = url+urllib.urlencode({"kw":...
  • 安装环境:pip install requestspip install lxmlpip install fire使用命令:python fofa.py -s=title="你的关键字" -o="结果输出文件" -c="你的cookie"代码如下:import requests,time,base64,firefrom lxml import...
  • 大部分使用的搜索引擎是百度和360 百度...一、使用百度爬取python相关的内容 >>> import requests #引库 >>> kv={'wd':'python'} #定义一个字典,用于修改后面的url >>...
  • 原博文2018-05-14 15:02 −#爬取网页的通用代码框架import requests def getHTMLText(url): try: r = requests.get(url,timeout=30) r.raise_for_status() #如果状态不是200,引发HTTPError异常 r.encod......
  • 使用python爬取抖音app视频

    万次阅读 多人点赞 2018-06-02 20:35:03
    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例。 编程工具:pycharm app抓包工具:charles
  • 利用python爬取微博内容,能够做到爬取任意关键字下的全部微博内容
  • 抖音举办美妙之夜,我就很好奇的记录一下:如何用python爬取app数据。这里,小编就以爬取抖音视频app为例。编程工具:pycharmapp抓包工具:mitmproxyapp自动化工具:appium运行环境:windows10思路:假设已经配置好...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,190
精华内容 3,676
关键字:

python爬取关键字

python 订阅