您的位置:首页 > 新闻资讯 >文章内容
代理IP爬虫抓取广告源代码
来源:互联网 作者:admin 时间:2019-09-26 10:35:54

  代理IP是爬虫的黄金搭配,相信这一点,是每一位经历过爬虫工作的都不会否认的。因为没有代理IP的协助,爬虫程序就会被网站的反爬虫给KO掉。


  我们如何利用爬虫,爬取网站页面广告元素,实现监控爬取元素的数目,定时发送监控邮件的操作?


代理IP爬虫抓取广告源代码


  以下是操作具体代码:


  #!/usr/bin/env python2.7

  # -*- coding: utf-8 -*-

  '''

  @xiayun

  @896365105@qq.com

  #爬取网站内容,利用phantomjs:IP代理+修改UA+动态页面执行JS

  '''

  from selenium import webdriver

  from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

  import time

  import urllib,urllib2

  import smtplib

  import re

  from email.mime.text import MIMEText

  from email.header import Header

  import sys

  def reptile():

  global result, data

  #proxy_ip.txt为IP代理池,可以自己爬IP,也可以买,不过都不稳定,

  #需要在前面再加一个IP验证程序。

  IPS = [i for i in open("./proxy_ip.txt", 'r').readline().split('\n') if i]

  print IPS

  for i in IPS:

  service_args = []

  service_args = ['--proxy-type=HTTP',]

  IP_str = ''.join(i)

  print IP_str

  proxy_IP = '--proxy=%s' % IP_str

  service_args.append(proxy_IP)

  dcap = dict(DesiredCapabilities.PHANTOMJS)

  #创建UA头

  dcap["phantomjs.page.settings.userAgent"] = ('Mozilla/5.0 (baomihua@iPhone;

  CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko)

  Version/9.0 Mobile/13B143 Safari/601.1')

  #利用phantomjs仿浏览器动作,参数2是代理IP

  driver = webdriver.PhantomJS(desired_capabilities=dcap, service_args=service_args)

  #设置访问超时时间

  driver.implicitly_wait(60)

  driver.set_page_load_timeout(60)

  try:

  driver.get('网页地址')

  except:

  print "timeout"

  finally:

  data = driver.page_source

  time.sleep(20)

  req = r"广告元素"

  rule1 = re.compile(req)

  lists = re.findall(rule1, data)

  counts = len(lists)

  print counts

  # print data

  driver.quit()

  #判断广告元素是否为22

  if counts == 22:

  print "The webpage is OK!"

  result = "The webpage is OK!Find 22 广告元素!

  proxy_IP:%s " % IP_str

  break

  if counts != 22:

  #IPS.remove(i)

  print "%s is bad!" % i.strip()

  result = "The webpage maybe bad"

  print "close"

  #返回结果和网页代码

  return result, data

  def send_mail(result,data):

  receivers = ['XXX@XX.com'] #接收人

  mail_host = 'smtp.exmail.qq.com' #代理邮箱smtp协议

  mail_user = 'xxx@xxx.com' #发送人

  mail_pass = 'xxxx' #密码

  mail_postfix = 'xxxx' #发件箱的后缀

  title = str(result)

  msg = MIMEText(data, 'plain', 'utf-8') #文本格式内容

  me = title.decode('utf-8') + "<" + mail_user + ">"

  msg['Subject'] = Header(title, 'utf-8')

  msg['From'] = Header(me, 'utf-8')

  msg['To'] = Header(";".join(receivers), 'utf-8')

  try:

  s = smtplib.SMTP()

  s.connect(mail_host)

  s.login(mail_user, mail_pass)

  s.sendmail(me,receivers , msg.as_string())

  s.close()

  print "发送成功"

  return True

  except smtplib.SMTPException:

  print "Error: 无法发送邮件"

  return False

  if __name__ == '__main__':

  while 1:

  print 'start' + ' ' + ''.join(time.ctime(time.time()))

  result, data = reptile()

  send_mail(result=result, data=data)

  print 'stop' + ' ' + ''.join(time.ctime(time.time()))

  time.sleep(600)

  sys.exit(0)


  通过以上操作我们就可以抓取到广告源代码,完成我们想要的目的啦。


相关文章内容简介
推荐阅读
  • 30 2019-04
    爬虫代理一定要选择高匿名

    爬虫代理一定要选择高匿名,为什么这么说呢?因为爬虫需要隐藏好身份才能获取到数据,如果没有隐藏好,分分钟被识破,自然是无用功了。我们来看看不能选择透明代理和匿名代理的原因。

  • 26 2020-03
    什么是代理服务器

    代理一词有着“代替”的含义,它在不同的领域有着不一样的表现。而在网络世界当中,代理一词通常是以代理服务器、代理ip的组合出现。

  • 25 2019-04
    影响代理IP质量的参数有哪些?

    影响代理IP质量的参数有哪些?使用代理IP,我们比较在乎质量,不然直接就是要免费的了,还花钱做什么呢?要想使用的代理IP质量好,那么我们就要对比下一些参数,这些参数的越好,代理IP

  • 02 2019-09
    代理IP用第三方检测工具为什么失灵?

    购买了代理IP服务,为了检测IP的可用性,大家都会喜欢用工具去检测一下IP是否有效。但是有时候,在用工具检测的时候,会发生显示IP无效的情况,那么这种情况,真的是代理IP的锅吗?

  • 24 2019-05
    透明代理无法隐藏IP地址

    透明代理无法隐藏IP地址,有时候大家使用代理,但是却被对方发现了,这是为什么呢?可能你使用的是透明代理,何为透明代理呢?

  • 31 2019-10
    代理IIP也有级别划分?

    现在利用代理IP来做网络营销推广,网络营销都已经非常普遍了,今天看到有人提问说代理IP也有分级?其实,代理IP的分级就是按照匿名程度来进行划分的。

在线咨询
大客户经理
大客户经理
1829380381
13316264505

大客户经理微信

微信公众号

微信公众号

回到顶部