我正在使用scrapy从website
上的2个表中抓取信息我先刮掉桌子。事实证明,员工和学生都是空的,而反应并非空洞。我还在页面源中找到了表格选项卡。任何人都可以找出问题所在吗?
import scrapy
from universities.items import UniversitiesItem
class UniversityOfSouthCarolinaColumbia(scrapy.Spider):
name = 'uscc'
allowed_domains = ['sc.edu']
start_urls = ['http://www.sc.edu/about/directory/?name=']
def parse(self, response):
for ln in ['Zhao']:
query = response.url + ln
yield scrapy.Request(query, callback=self.parse_item)
@staticmethod
def parse_item(response):
staffs = response.xpath('//table[@id="directorystaff"]/tbody/tr[@role="row"]')
students = response.xpath('//table[@id="directorystudent"]/tbody/tr[@role="row"]')
print('--------------------------')
print('staffs', staffs)
print('==========================')
print('students', students)
答案 0 :(得分:0)
这真是个很酷的问题。我正在调查此事。我得出的结论是,响应中不包含有关tags属性的信息。我认为浏览器是修改page_source_body,任何人都有脚本向标签添加属性。
作为回应,tr-tags没有属性' role'
请看:
<table class="display" id="directorystaff" width="100%">
<thead>
<tr>
<th style="text-align: left">Name</th>
<th style="text-align: left">Email</th>
<th style="text-align: left">Phone</th>
<th style="text-align: left">Department</th>
<th style="text-align: left">Office Address</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">Zhao, Xia </td>
<td style="text-align: left"> </td>
<td style="text-align: left">(803) 777-8436 </td>
<td style="text-align: left">Chemistry </td>
<td style="text-align: left">537 </td>
</tr>
<tr>
<td style="text-align: left">Zhao, Xing </td>
<td style="text-align: left"> </td>
<td style="text-align: left"> </td>
<td style="text-align: left">Mechanical Engineering </td>
<td style="text-align: left"> </td>
</tr>
所以,如果你想获得员工名单,我建议下一个XPath:
//table[@id="directorystaff"]/tbody/tr/td
对于学生,我建议下一个XPath:
//table[@id="directorystudent"]/tbody/tr/td
如果你想要别的东西,你可以修改这个是XPath查询。
这是你的例子:
import requests
from lxml import html
x = requests.get("https://www.sc.edu/about/directory/?name=Zhao")
ht = html.fromstring(x.text)
element = ht.xpath('//table[@id="directorystaff"]/tbody/tr/td')
for el in element:
print(el.text)
输出:
>>Zhao, Xia
>>
>>(803) 777-8436
>>Chemistry
>>537
>>Zhao, Xing
>>
>>
>>Mechanical Engineering