Python3 selected选择的网页爬取

大神,小白求助~~~

这个网址默认selected选择默认是三月的,我想要十月的。怎么去拿到下拉框10年的网页数据啊。

http://www.nasdaq.com/symbol/...

clipboard.png


import csv
import requests
import datetime
import urllib.parse
from bs4 import BeautifulSoup

user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'
headers = {'User-Agent': user_agent}
url=r'http://www.nasdaq.com/symbol/baba/historical#.UWdnJBDMhHk'
r = requests.get(url, headers=headers, timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text)
阅读 2.7k
2 个回答

提供一个思路:你先检查下你选择10years的时候,浏览器network有没有发出请求,看看请求到的数据。

试了一下,看到的是这样的请求:

Request URL: http://www.nasdaq.com/symbol/...
Method: POST
Request Payload: 10y|false|BABA

用在线post工具请求试了下(Request Body的参数名用了一个空格),结果如下:

clipboard.png

clipboard.png

看来不用设置请求头,用python的requests库可以很容易实现这个简单POST请求,

So Easy

刚学爬虫,下面这个亲测可用,代码写的挫请前辈们指教

import requests


session = requests.Session()

session.headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0',
    'Accept-Encoding':'gzip, deflate',
    'Content-Type' :'application/json',
}
url = 'http://www.nasdaq.com/symbol/baba/historical'
data = "10y|false|BABA"
r = session.post(url ,data=data)


print(r.text)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题