使用Scrapy框架通过response获取元素为none的问题
最近在学习python的网络爬虫,有个学习任务是需要爬取巨潮资讯的某一板块的咨询
如下图的内容:
使用的代码如下
class JuchaonewsSpider(scrapy.Spider):
name = 'juchaonews'
allowed_domains = ['www.cninfo.com.cn']
start_urls = ['http://www.cninfo.com.cn/new/commonUrl?url=disclosure/list/notice#sseMain']
def parse(self, response):
item_nodes = response.css(
'#pane-important > div.el-table-box > div > div.el-table__body-wrapper.is-scrolling-none > table > tbody > tr')
for item_node in item_nodes:
item_loader = JuchaoItemLoader(item=JuchaoItem(), selector=item_node)
item_loader.add_css('daima', '.el-table_1_column_1 .cell .ahover span::text').extract_first()
item_loader.add_css('jiancheng', '.el-table_1_column_2 .cell .ahover span::text').extract_first()
item_loader.add_css('biaoti', '.el-table_1_column_3 .cell a::text').extract_first()
item_loader.add_css('shijian', '.el-table_1_column_4 .cell span::text').extract_first()
stock_item = item_loader.load_item()
yield stock_item
使用css选择器进行选择相应的标签的,并显示其文本。但是在控制台没有输出一点的文本内容。很奇怪,因为在证券之星http://quote.stockstar.com/stock/ranklist_a_3_1_1.html网站使用相同方法爬取数据是可以正确得到结果的。
网上查了好久,最后通过打印输出response.text发现response包含的网页代码中与原网页的代码不同,response中缺少所有数据方面的内容,推测该网站的内容是动态生成。使用相同的方法查看证券之星的response中的内容是包含全部数据信息的。
如图:
所以现在我的学习任务又要拓展到selenium了