《Python金融大数据挖掘与分析全流程详解》网页爬虫 笔记整理

3.1 提取百度新闻标题、网址、日期及来源

# =============================================================================
# 3.1 百度新闻数据挖掘 by 王宇韬
# =============================================================================

import requests
import re

#headers参数提供的是网站访问者的信息,headers中User-Agent表示的是用什么浏览器访问的。下面用的是谷歌浏览器
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}

url = 'https://www.baidu.com/s?tn=news&rtt=1&bsst=1&cl=2&wd=阿里巴巴'  # 把链接中rtt参数换成4即是按时间排序,默认为1按焦点排序,3.4.1小节也有讲到
res = requests.get(url, headers=headers).text  # 加上headers用来告诉网站这是通过一个浏览器进行的访问
# print(res)

p_info = '

(.*?)

' #存储findall函数查找到的内容的列表 info = re.findall(p_info, res, re.S) #用正则表达式提取标题 p_href = '

.*?。<.*?>表示任何形式为的内容。 title[i] = re.sub('<.*?>', '', title[i]) info[i] = re.sub('<.*?>', '', info[i]) source.append(info[i].split('  ')[0]) date.append(info[i].split('  ')[1]) source[i] = source[i].strip() date[i] = date[i].strip() print(str(i + 1) + '.' + title[i] + '(' + date[i] + '-' + source[i] + ')') print(href[i])

8.1 IP代理

所谓IP代理就是把本机的地址伪装成其他IP地址。

# =============================================================================
# 8.1 爬虫进阶1-IP代理简介 by 王宇韬
# =============================================================================

import requests
#IP代理地址是需要自己买的
proxy = requests.get('http://api.xdaili.cn/xdaili-api//greatRecharge/getGreatIp?spiderId=b030195e2075469299bca6b661c913ff&orderno=YZ201810262456rdpAb0&returnType=1&count=1').text
proxy = proxy.strip()  # 这一步非常重要,因为要把看不见的换行符等给清除掉
print(proxy)
proxies = {"http": "http://"+proxy, "https": "https://"+proxy}
#要访问的地址
url = 'https://httpbin.org/get'
#使用代理IP访问
res = requests.get(url, proxies=proxies).text
print(res)

8.2 Selenium库详解

Selenium库可以驱动浏览器模拟人的操作,如鼠标单击、键盘输入等,它可以获得网页中动态渲染出来的数据,而这些数据往往才是有用的数据,因此这是一个比较重要的库。但是,Selenium库的访问速度要比Requests库慢,所以一般只有复杂的网站才有它。

# =============================================================================
# 8.2 爬虫进阶2-爬虫利器selenium库详解 by 王宇韬
# =============================================================================

# 1.打开及关闭网页+网页最大化
from selenium import webdriver
browser = webdriver.Chrome()
#将模拟器窗口最大化
browser.maximize_window()
browser.get("https://www.baidu.com/")
browser.quit()

# 2.xpath方法来定位元素,xpath可以理解为是元素的名字或id
from selenium import webdriver
browser = webdriver.Chrome()
browser.get("https://www.baidu.com/")
#模拟在搜索框里输入“python”关键词。
browser.find_element_by_xpath('//*[@id="kw"]').send_keys('python')
#模拟点击
browser.find_element_by_xpath('//*[@id="su"]').click()

# 3.css_selector方法来定位元素
from selenium import webdriver
browser = webdriver.Chrome()
browser.get("https://www.baidu.com/")
browser.find_element_by_css_selector('#kw').send_keys('python')
browser.find_element_by_css_selector('#su').click()

# 4.browser.page_source方法来获取模拟键盘鼠标点击,百度搜索python后的网页源代码
from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.get("https://www.baidu.com/")
browser.find_element_by_xpath('//*[@id="kw"]').send_keys('python')
browser.find_element_by_xpath('//*[@id="su"]').click()
time.sleep(3)  # 因为是点击按钮后跳转,所以最好休息3秒钟再进行源代码获取,如果是直接访问网站,则通常不需要等待。
data = browser.page_source
print(data)

# 5.browser.page_source方法来获取新浪财经股票信息
from selenium import webdriver
browser = webdriver.Chrome()
browser.get("http://finance.sina.com.cn/realstock/company/sh000001/nc.shtml")
data = browser.page_source
print(data)

# 6.Chrome Headless无界面浏览器设置
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
#不弹出模拟浏览器,在后台运行
chrome_options.add_argument('--headless')
browser = webdriver.Chrome(chrome_options=chrome_options)
browser.get("http://finance.sina.com.cn/realstock/company/sh000001/nc.shtml")
data = browser.page_source
print(data)

 

你可能感兴趣的:(Python学习,爬虫)