Я новичок в python и в целом, и пытаюсь использовать scrapy для извлечения данных с веб-сайта. Проблема в том, что все данные, которые мне нужны, находятся в одной таблице, и многие ее элементы имеют одинаковые теги. HTML выглядит так:
<table cellpadding="10"><tr><td valign="top">
</td><td><br>
<br><br><big><b>1-555-555-1111</b></big>
<br><br> LAST, FIRST MIDDLE
<br> <b>Residence address:</b> 1234 street rd , , CITY, 12345
<br> Sex: M
<br> Race: Black, not Hispanic
<br> Birth date: 16 January 1968
<br> Voter ID number: 111111111
<br> Visit the <a href="https://webpage.html">Detail Page of LAST FIRST MIDDLE</a>
<br><br><big><b>1-555-555-1112</b></big>
<br><br> BLAST, BFIRST BM.
<br> <b>Residence address:</b> 1234 ANOTHER ST , #2-213, CITY, 12345
<br> Sex: F
<br> Race: White, not Hispanic
<br> Birth date: 18 December 1933
<br> Voter ID number: 111111112
<br> Visit the <a href="https://webpage.html">Detail Page of LAST FIRST MIDDLE</a>'
<br><br> BBLAST, BBFIRST BBM.
<br> <b>Mailing address:</b> PO BOX 1323, CITY, ST 12345
<br> <b>Residence address:</b> 1234 ANOTHER ST , #2-213, CITY, ST 12345
<br> Sex: F
<br> Race: White, not Hispanic
<br> Birth date: 18 December 1933
<br> Voter ID number: 111111113
<br> Visit the <a href="https://webpage.html">Detail Page of LAST FIRST MIDDLE</a>'
Мне нужно извлечь данные и иметь возможность выводить их в файл .csv. Мне нужно иметь эти данные в CSV с каждым человеком в их собственном ряду. У меня возникли проблемы, потому что я не знаю, как извлечь его и сохранить его в порядке из-за того, что некоторые записи имеют более одного человека на один номер телефона, и в этих записях номер телефона не печатается для каждого человека , только однажды. Лица, прикрепленные к этому номеру, указаны в одной записи. Также иногда есть поле почтового адреса и поле адреса проживания.
Мне просто нужно убедиться, что при извлечении данных поле номера телефона правильно заполнено для лиц, которые делят номер с другим человеком, и мне нужно убедиться, что есть пустое поле для почтового адреса для записей там нет отдельного адреса.
Когда я пытался что-то вытащить сам, я могу извлечь данные, но они неправильно сохраняют записи с правильным человеком, потому что, как только он попадает в запись с более чем одним человеком в разделе телефонных номеров, он делает их имена все от одного номера телефона. В настоящее время у меня есть следующий код, написанный только для того, чтобы попытаться извлечь число и DOB:
import scrapy
class NumspiderSpider(scrapy.Spider):
name = 'numspider'
allowed_domains = ['scraped.site']
start_urls = ['https://scraped.site']
def parse(self, response):
numbers = response.xpath('//td[2]/big/b/text()').extract()
dob = response.xpath(".//td[2]/following::text()[contains(., 'Birth date')]").extract()
yield {'Number': numbers, 'DOB': dob}
Кроме того, это, к сожалению, имеет дополнительную проблему с тем, чтобы тянуть вещи, которые я не хочу, например, мои дни рождения выглядят как u'\xa0\xa0\xa0\xa0\xa0Birth date: 16 January 1968\n
, а мои числа выглядят так u'1-555-555-1111'
. Когда я получаю эту информацию в свой последний CSV, я хочу, чтобы она читала 16 January 1968
и 16 January 1968