我这里把很多东西写死了。就放一些逻辑在里边。
完整代码如下
其中用到了模拟浏览器请求。原因是因为requests抓取和模拟浏览器抓取下来的内容不一致。你会很纠结。感兴趣的可以试试。
# -*- encoding: utf-8 -*-
# 导包
import gevent
# 猴子补丁
from gevent import monkey
monkey.patch_all()
import requests
import os
import re
from lxml import etree
import time
# 模拟浏览器行为
from selenium import webdriver
# 定义全局变量
global_url_list = []
# 定义抓取类
class GeventSpider(object):
# 定义类属性
encloseing_url_list = []
# 定义爬取内页的方法
def get_inner(self,url):
# 发送请求
r = requests.get(url)
html = r.content.decode('utf-8')
# 正则比配标题
regex = re.compile('<h1><!--repaste.title.begin-->(.+?)<!--repaste.title.end--><\/h1>',re.I)
# 匹配模式不区分大小写
print(regex.findall(html))
# 定义数据匹配方法
def get_xpath(self,html):
# 初始化xml
html = etree.HTML(html)
# 匹配url
html_data_url = html.xpath('//span[@class&#